ANTICHAT — форум по информационной безопасности, OSINT и технологиям
ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию.
Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club,
и теперь снова доступен на новом адресе —
forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.

31.03.2009, 22:25
|
|
Постоянный
Регистрация: 05.07.2008
Сообщений: 555
Провел на форуме: 3134311
Репутация:
1467
|
|
Сообщение от Nick_Rimer
Тогда у меня еще пару вопросов:
1. Все-таки нарвался на Stack overflow.. есть ли на него exception? чтобы попробовать его отловить.. и избавиться бы от него!
2. Когда загружается приложение, курсор мышки сразу устанавливается на середину.. меня это бесит, мне в этом приложении вообще мышь не нужна.. убрать бы этот курсор на время работы приложения.. только чтобы в других приложениях он был!
Спасибо.. только и все предыдущее пока остается в силе..
2 не знаю, поковыряйся в настройках окна. Там есть курсоры, может можно поставить что-то типаа none
|
|
|

03.04.2009, 14:23
|
|
Новичок
Регистрация: 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]...

|
|
|

31.03.2009, 21:10
|
|
Участник форума
Регистрация: 06.03.2007
Сообщений: 283
Провел на форуме: 1547094
Репутация:
120
|
|
Пацаны, ну помогите написать один код на delphi который будет каждую минуту открывать файл 1.txt в диске C:\ , и если там написано '123', то тогда программа должна проверить запущен ли процесс 1.exe, и если да, то закрыть его и вывести сообщение типа 'Процесс закрыт', цикл должен быть бессконечным.
Плиз, просто сам никак не могу написать такой код, новичок еще в этом деле...=)))
|
|
|

31.03.2009, 22:20
|
|
Постоянный
Регистрация: 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]
|
|
|

31.03.2009, 21:20
|
|
Участник форума
Регистрация: 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..
|
|
|

03.04.2009, 19:09
|
|
Постоянный
Регистрация: 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
|
|
|

03.04.2009, 21:58
|
|
Постоянный
Регистрация: 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;
}
|
|
|

04.04.2009, 00:31
|
|
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 
|
|
|

03.04.2009, 21:09
|
|
Познавший АНТИЧАТ
Регистрация: 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..
|
|
|

03.04.2009, 21:14
|
|
Участник форума
Регистрация: 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;
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|