HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2

ANTICHAT — форум по информационной безопасности, OSINT и технологиям

ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию. Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club, и теперь снова доступен на новом адресе — forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
Вернуться   Форум АНТИЧАТ > ПРОГРАММИРОВАНИЕ > С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #1  
Старый 31.03.2009, 22:25
KaZ@NoVa
Постоянный
Регистрация: 05.07.2008
Сообщений: 555
Провел на форуме:
3134311

Репутация: 1467


По умолчанию

Цитата:
Сообщение от Nick_Rimer  
Тогда у меня еще пару вопросов:

1. Все-таки нарвался на Stack overflow.. есть ли на него exception? чтобы попробовать его отловить.. и избавиться бы от него!

2. Когда загружается приложение, курсор мышки сразу устанавливается на середину.. меня это бесит, мне в этом приложении вообще мышь не нужна.. убрать бы этот курсор на время работы приложения.. только чтобы в других приложениях он был!

Спасибо.. только и все предыдущее пока остается в силе..
Цитата:
1 EStackOverflow
2 не знаю, поковыряйся в настройках окна. Там есть курсоры, может можно поставить что-то типаа none
 
Ответить с цитированием

  #2  
Старый 03.04.2009, 14:23
OLISAV
Новичок
Регистрация: 07.03.2009
Сообщений: 5
Провел на форуме:
6146

Репутация: 0
По умолчанию

Цитата:
Сообщение от Nick_Rimer  
Тогда у меня еще пару вопросов:

2. Когда загружается приложение, курсор мышки сразу устанавливается на середину.. меня это бесит, мне в этом приложении вообще мышь не нужна.. убрать бы этот курсор на время работы приложения.. только чтобы в других приложениях он был!
Form1.Cursor:=crNone;

Если же тебе понадобится особенный курсор:

Открываешь файл ресурсов твоей программы (файл этот автоматически создаётся и имеет имя твоей проги.res) стандартной программой ImageEditor. Она сразу с дельфёй идет... Или, мона другими редакторами ресурсов - XN, Restorator... Можешь создать свой файл ресурсов...

Там добавляешь группу курсоров... Правда в стандартном дельфийском ImageEditore только Ч/Б курсоры... , но если тебе понадобиться не Ч/Б, а разноцветный юзай XN resource editor... Курсор именуешь как нибудь... "cur_name" например...

Потом прописываешь после слова implementation

{$R <имя твоего файла ресурсов>.res}

на создание формы пишушь:

Screen.Cursors[5] := LoadCursor(HInstance, 'cur_name'); //заргужаешь курсор
Form1.Cursor := 5; // теперь над формой 1 будет твой курсор...

Таких ты можешь нарисовать много и потом просто загружать их в screen.Cursirs[n]...

 
Ответить с цитированием

  #3  
Старый 31.03.2009, 21:10
xaker-boss
Участник форума
Регистрация: 06.03.2007
Сообщений: 283
Провел на форуме:
1547094

Репутация: 120
По умолчанию

Пацаны, ну помогите написать один код на delphi который будет каждую минуту открывать файл 1.txt в диске C:\ , и если там написано '123', то тогда программа должна проверить запущен ли процесс 1.exe, и если да, то закрыть его и вывести сообщение типа 'Процесс закрыт', цикл должен быть бессконечным.

Плиз, просто сам никак не могу написать такой код, новичок еще в этом деле...=)))
 
Ответить с цитированием

  #4  
Старый 31.03.2009, 22:20
KaZ@NoVa
Постоянный
Регистрация: 05.07.2008
Сообщений: 555
Провел на форуме:
3134311

Репутация: 1467


По умолчанию

Цитата:
Сообщение от xaker-boss  
Пацаны, ну помогите написать один код на delphi который будет каждую минуту открывать файл 1.txt в диске C:\ , и если там написано '123', то тогда программа должна проверить запущен ли процесс 1.exe, и если да, то закрыть его и вывести сообщение типа 'Процесс закрыт', цикл должен быть бессконечным.

Плиз, просто сам никак не могу написать такой код, новичок еще в этом деле...=)))
Про процессы не знаю - поищи в гугле, а вообще:

1) Ставишь на форму таймер, ставишь его Interval.
2) В таймере пишешь, что-то типа
Цитата:
[code delphi]
f:text;
s:string;

Assign(f,'C:\1.txt');
Reset(f);
ReadLn(f,s);
Close(f);
if s='123' then
//проверяем наличие процесса
if Proc then begin
//убиваем процесс
Application.Messagebox('','Ok',0);
end;

[/code]
 
Ответить с цитированием

  #5  
Старый 31.03.2009, 21:20
art2222
Участник форума
Регистрация: 28.04.2008
Сообщений: 172
Провел на форуме:
1191083

Репутация: 270
По умолчанию

Код:
uses 
Psapi, tlhelp32; 

procedure CreateWin9xProcessList(List: TstringList); 
var 
hSnapShot: THandle; 
ProcInfo: TProcessEntry32; 
begin 
if List = nil then Exit; 
hSnapShot := CreateToolHelp32Snapshot(TH32CS_SNAPPROCESS, 0); 
if (hSnapShot <> THandle(-1)) then 
begin 
   ProcInfo.dwSize := SizeOf(ProcInfo); 
   if (Process32First(hSnapshot, ProcInfo)) then 
   begin 
     List.Add(ProcInfo.szExeFile); 
     while (Process32Next(hSnapShot, ProcInfo)) do 
       List.Add(ProcInfo.szExeFile); 
   end; 
   CloseHandle(hSnapShot); 
end; 
end; 

procedure CreateWinNTProcessList(List: TstringList); 
var 
PIDArray: array [0..1023] of DWORD; 
cb: DWORD; 
I: Integer; 
ProcCount: Integer; 
hMod: HMODULE; 
hProcess: THandle; 
ModuleName: array [0..300] of Char; 
begin 
if List = nil then Exit; 
EnumProcesses(@PIDArray, SizeOf(PIDArray), cb); 
ProcCount := cb div SizeOf(DWORD); 
for I := 0 to ProcCount - 1 do 
begin 
   hProcess := OpenProcess(PROCESS_QUERY_INFORMATION or 
     PROCESS_VM_READ, 
     False, 
     PIDArray[I]); 
   if (hProcess <> 0) then 
   begin 
     EnumProcessModules(hProcess, @hMod, SizeOf(hMod), cb); 
     GetModuleFilenameEx(hProcess, hMod, ModuleName, SizeOf(ModuleName)); 
     List.Add(ModuleName); 
     CloseHandle(hProcess); 
   end; 
end; 
end; 

 

procedure GetProcessList(var List: TstringList); 
var 
ovi: TOSVersionInfo; 
begin 
if List = nil then Exit; 
ovi.dwOSVersionInfoSize := SizeOf(TOSVersionInfo); 
GetVersionEx(ovi); 
case ovi.dwPlatformId of 
   VER_PLATFORM_WIN32_WINDOWS: CreateWin9xProcessList(List); 
   VER_PLATFORM_WIN32_NT: CreateWinNTProcessList(List); 
end 
end; 

 

function EXE_Running(FileName: string; bFullpath: Boolean): Boolean; 
var 
i: Integer; 
MyProcList: TstringList; 
begin 
MyProcList := TStringList.Create; 
try 
   GetProcessList(MyProcList); 
   Result := False; 
   if MyProcList = nil then Exit; 
   for i := 0 to MyProcList.Count - 1 do 
   begin 
     if not bFullpath then 
     begin 
       if CompareText(ExtractFileName(MyProcList.Strings[i]), FileName) = 0 then 
         Result := True 
     end 
     else if CompareText(MyProcList.strings[i], FileName) = 0 then Result := True; 
     if Result then Break; 
   end; 
finally 
   MyProcList.Free; 
end; 

end;
(c) DRKB

Проверяем так:

Код:
procedure CheckFile;
var
  f: TextFile;
  s: string;
begin
  AssignFile(f,'c:\1.txt');
  Reset(f);
  Readln(f,s);
  if s='123' then
  begin
    if EXE_Running('1.exe', False) then
      ShowMessage('EXE is running')
    else
      ShowMessage('EXE is not running');
  end;
  CloseFile(f);
end;
Потом в цикле вызываешь процедуру и все.

А вот как нужно убивать процесс зная только его имя (notepad.exe например)
Код:
uses 
Tlhelp32, Windows, SysUtils; 

function KillTask(ExeFileName: string): integer; 
const 
PROCESS_TERMINATE=$0001; 
var 
ContinueLoop: BOOL; 
FSnapshotHandle: THandle; 
FProcessEntry32: TProcessEntry32; 
begin 
result := 0; 
FSnapshotHandle := CreateToolhelp32Snapshot 
                    (TH32CS_SNAPPROCESS, 0); 
FProcessEntry32.dwSize := Sizeof(FProcessEntry32); 
ContinueLoop := Process32First(FSnapshotHandle, 
                                FProcessEntry32); 
while integer(ContinueLoop) <> 0 do 
begin 
   if ((UpperCase(ExtractFileName(FProcessEntry32.szExeFile)) = 
        UpperCase(ExeFileName)) 
    or (UpperCase(FProcessEntry32.szExeFile) = 
        UpperCase(ExeFileName))) then 
     Result := Integer(TerminateProcess(OpenProcess( 
                       PROCESS_TERMINATE, BOOL(0), 
                       FProcessEntry32.th32ProcessID), 0)); 
   ContinueLoop := Process32Next(FSnapshotHandle, 
                                 FProcessEntry32); 
end;  
CloseHandle(FSnapshotHandle); 
end;

Последний раз редактировалось art2222; 31.03.2009 в 21:25..
 
Ответить с цитированием

  #6  
Старый 03.04.2009, 19:09
НTL
Постоянный
Регистрация: 26.01.2008
Сообщений: 796
Провел на форуме:
5209663

Репутация: 357


По умолчанию

Нужен код который будет:

1) Забирать значение поля (text) edit1
2) Искать это значение в файле name.txt (До знака ":")
3) Выводить значение (Только после ":") этой строчки в поле (text) edit2

Пример:

Фаил: name.txt
Код:
1:2
3:4
5:6
7:8
9:10
11:12
13:14
и, т.д.
Значение поля (text) edit1: 5
Значит значение поля (text) edit2 должно быть: 6
 
Ответить с цитированием

  #7  
Старый 03.04.2009, 21:58
KaZ@NoVa
Постоянный
Регистрация: 05.07.2008
Сообщений: 555
Провел на форуме:
3134311

Репутация: 1467


По умолчанию

Цитата:
Сообщение от НTL  
Нужен код который будет:

1) Забирать значение поля (text) edit1
2) Искать это значение в файле name.txt (До знака ":")
3) Выводить значение (Только после ":") этой строчки в поле (text) edit2

Пример:

Фаил: name.txt
Код:
1:2
3:4
5:6
7:8
9:10
11:12
13:14
и, т.д.
Значение поля (text) edit1: 5
Значит значение поля (text) edit2 должно быть: 6
вот На C+++
Код HTML:
#include <windows.h>
#include"stdio.h"
HDC hDC;
RECT rect;
static HWND wedit;
static HWND wedit1;
HWND hWnd;
FILE*f;
BYTE chBuff[80],c[80],k,n=0;
int i=0;
WORD cbText;
WNDCLASS wc;

HINSTANCE hInst;
LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam);


int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow)
{
LPCSTR AppName = "Прога";
MSG msg;
hInst = hInstance;
WNDCLASS wc;
ZeroMemory(&wc, sizeof(wc));
wc.style = CS_HREDRAW | CS_VREDRAW;
wc.lpfnWndProc = (WNDPROC)WndProc;
wc.hInstance = hInst;
wc.hIcon = LoadIcon(hInst, IDI_APPLICATION);
wc.hCursor = LoadCursor(NULL, IDC_ARROW);
wc.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
wc.lpszClassName = AppName;
RegisterClass(&wc);
hWnd = CreateWindow(AppName,AppName,WS_OVERLAPPEDWINDOW,CW_USEDEFAULT, 0,100, 130,NULL,NULL,hInst,NULL);
FreeConsole();
ShowWindow(hWnd, SW_SHOW); // Отображаем окно
UpdateWindow(hWnd); // Перерисовываем окно
while(GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}

LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
switch(msg)
{
case WM_CREATE:
CreateWindow("BUTTON","OK",WS_CHILD|BS_PUSHBUTTON|WS_VISIBLE,10,60,90,20,hWnd,0,1,NULL);
wedit=CreateWindow("edit", "",WS_CHILD | WS_VISIBLE| WS_BORDER| ES_CENTER | ES_MULTILINE | ES_WANTRETURN ,5, 5, 100, 20, hWnd, NULL, 1, NULL);
wedit1=CreateWindow("edit", "",WS_CHILD | WS_VISIBLE | WS_BORDER| ES_CENTER| ES_MULTILINE | ES_WANTRETURN ,5, 30, 100, 20, hWnd, NULL, 1, NULL);
SetFocus(wedit);
break;

case WM_DESTROY:
PostQuitMessage(0);
break;

case WM_COMMAND:
hDC=GetDC(hWnd);
switch(LOWORD(wParam))
{
case 0://событие от первой кнопки
if (HIWORD(wParam)==BN_CLICKED)
{
*(WORD*) chBuff = sizeof (chBuff) - 1;
cbText = SendMessage(wedit, EM_GETLINE, 0,(LPARAM)(LPSTR)chBuff);
chBuff[cbText] = '\0';
if((f=fopen("name.txt","r"))==NULL)
{
SetWindowText(wedit1,(LPSTR)(LPCSTR)"ошибка");
}
i=0;
n=0;
while(fscanf(f,"%c",&k),!feof(f))
{
if((k>='0')&&(k<='9'))
{
c[i]=k;
i++;
}
else
{
c[i]='\0';
i=0;
if((k==':')&&(strcmp(c,chBuff)==0))
{
while(fscanf(f,"%c",&c[i]),((c[i]>='0')&&(c[i]<='9')))
{
i++;
}
c[i]='\0';
SetWindowText(wedit1,(LPSTR)(LPCSTR)c);
n=1;
}
}
}
fclose(f);
if(n==0)
{
SetWindowText(wedit1,(LPSTR)(LPCSTR)"не найдено");
}
}
break;
};
DeleteObject(hDC);
break;
default:
return DefWindowProc(hWnd, msg, wParam, lParam);
}

return 0;
}
 
Ответить с цитированием

  #8  
Старый 04.04.2009, 00:31
rushter
Reservists Of Antichat - Level 6
Регистрация: 23.05.2008
Сообщений: 756
Провел на форуме:
9257858

Репутация: 979


По умолчанию

Цитата:
Сообщение от KaZ@NoVa  
вот На C+++
Код HTML:
#include <windows.h>
#include"stdio.h"
HDC hDC;
RECT rect;
static HWND wedit;
static HWND wedit1;
HWND hWnd;
FILE*f;
BYTE chBuff[80],c[80],k,n=0;
int i=0;
WORD cbText;
WNDCLASS wc;

HINSTANCE hInst;
LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam);


int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow)
{
LPCSTR AppName = "Прога";
MSG msg;
hInst = hInstance;
WNDCLASS wc;
ZeroMemory(&wc, sizeof(wc));
wc.style = CS_HREDRAW | CS_VREDRAW;
wc.lpfnWndProc = (WNDPROC)WndProc;
wc.hInstance = hInst;
wc.hIcon = LoadIcon(hInst, IDI_APPLICATION);
wc.hCursor = LoadCursor(NULL, IDC_ARROW);
wc.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
wc.lpszClassName = AppName;
RegisterClass(&wc);
hWnd = CreateWindow(AppName,AppName,WS_OVERLAPPEDWINDOW,CW_USEDEFAULT, 0,100, 130,NULL,NULL,hInst,NULL);
FreeConsole();
ShowWindow(hWnd, SW_SHOW); // Отображаем окно
UpdateWindow(hWnd); // Перерисовываем окно
while(GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}

LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
switch(msg)
{
case WM_CREATE:
CreateWindow("BUTTON","OK",WS_CHILD|BS_PUSHBUTTON|WS_VISIBLE,10,60,90,20,hWnd,0,1,NULL);
wedit=CreateWindow("edit", "",WS_CHILD | WS_VISIBLE| WS_BORDER| ES_CENTER | ES_MULTILINE | ES_WANTRETURN ,5, 5, 100, 20, hWnd, NULL, 1, NULL);
wedit1=CreateWindow("edit", "",WS_CHILD | WS_VISIBLE | WS_BORDER| ES_CENTER| ES_MULTILINE | ES_WANTRETURN ,5, 30, 100, 20, hWnd, NULL, 1, NULL);
SetFocus(wedit);
break;

case WM_DESTROY:
PostQuitMessage(0);
break;

case WM_COMMAND:
hDC=GetDC(hWnd);
switch(LOWORD(wParam))
{
case 0://событие от первой кнопки
if (HIWORD(wParam)==BN_CLICKED)
{
*(WORD*) chBuff = sizeof (chBuff) - 1;
cbText = SendMessage(wedit, EM_GETLINE, 0,(LPARAM)(LPSTR)chBuff);
chBuff[cbText] = '\0';
if((f=fopen("name.txt","r"))==NULL)
{
SetWindowText(wedit1,(LPSTR)(LPCSTR)"ошибка");
}
i=0;
n=0;
while(fscanf(f,"%c",&k),!feof(f))
{
if((k>='0')&&(k<='9'))
{
c[i]=k;
i++;
}
else
{
c[i]='\0';
i=0;
if((k==':')&&(strcmp(c,chBuff)==0))
{
while(fscanf(f,"%c",&c[i]),((c[i]>='0')&&(c[i]<='9')))
{
i++;
}
c[i]='\0';
SetWindowText(wedit1,(LPSTR)(LPCSTR)c);
n=1;
}
}
}
fclose(f);
if(n==0)
{
SetWindowText(wedit1,(LPSTR)(LPCSTR)"не найдено");
}
}
break;
};
DeleteObject(hDC);
break;
default:
return DefWindowProc(hWnd, msg, wParam, lParam);
}

return 0;
}
гугл не выдал вариант для delphi ? тема вообщето про delphi
 
Ответить с цитированием

  #9  
Старый 03.04.2009, 21:09
slesh
Познавший АНТИЧАТ
Регистрация: 05.03.2007
Сообщений: 1,985
Провел на форуме:
3288241

Репутация: 3349


По умолчанию

типа так, компилятора под рукой нет, так что проверить не могу
Код:
var
 mas:array of string;
 cnt:integer;
 f:texfile;
x:integer;
s:string;
begin
 assignfile(f,'name.txt');
reset(f);
cnt:=0;
 while not eof(f) do
   begin
     inc(cnt);
    setlength(mas,cnt)
    readln(f,mas[cnt-1]);
   end;
closefile(f);
.............
for x:=0 to cnt-1 do
 begin
  if copy(mas[x],1,pos(':',mas[x])-1)=edit1.text then 
   begin
    s:=mas[x];
   delete(s,1,pos(':',s));
    edit2.text:=s;
    break;
  end;
end;

Последний раз редактировалось slesh; 03.04.2009 в 21:15..
 
Ответить с цитированием

  #10  
Старый 03.04.2009, 21:14
art2222
Участник форума
Регистрация: 28.04.2008
Сообщений: 172
Провел на форуме:
1191083

Репутация: 270
По умолчанию

Цитата:
Нужен код который будет:

1) Забирать значение поля (text) edit1
2) Искать это значение в файле name.txt (До знака ":")
3) Выводить значение (Только после ":") этой строчки в поле (text) edit2
Например вот так:

Код:
procedure TForm1.Button3Click(Sender: TObject);
var
  f: TextFile;
  s,d: String;
  i: Integer;
begin
  d:=Edit1.Text;
  AssignFile(f,'name.txt');
  Reset(f);
  while not eof(f) do
  begin
    ReadLn(f,s);
    i:=pos(':',s);
    if d=copy(s,1,i-1) then
    begin
      Edit2.Text:=copy(s,i+1,Length(s)-i+1);
      Break;
    end;
  end;
  CloseFile(f);
end;
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Wi-Fi, BT] Задай вопрос - получи ответ! Alexsize Беспроводные технологии/Wi-Fi/Wardriving 2569 10.05.2026 13:27
[jQuery] - Задай вопрос, получи ответ Isis PHP 62 25.12.2009 03:25



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT ™ © 2001- Antichat Kft.