![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
помогите плиз!!! [D5, Win2k]
Bukerman © (2002-12-16 16:06:00)Господа мастаки, бьюсь второй день, не могу понять, может кто подскажет, есть такой код
var
Wnd : HWND;
lpdwProcessId : LPDWORD;
hProcess : Cardinal; // handle to the process
jjj : DWORD;
begin
Wnd := GetWindow(Handle, gw_HWndFirst);
GetWindowThreadProcessId(Wnd, lpdwProcessId);
jjj:=lpdwProcessId^;
hProcess:=OpenProcess(PROCESS_ALL_ACCESS, FALSE, jjj);
в таком виде работает, но выдает warning, что lpdwProcessId may not be initialized, если сначала проинициализировать: lpdwProcessId:=nil;
то компилируется нормально, но в runtime на строке GetWindowThreadProcessId(Wnd, lpdwProcessId);
ругается access violation в модуле user32.dll. Но самое интересное, что если оставить в таком виде (весь остальной код закомментирован), то хоть и выдает ворнинги, но работает, а если
его раскомментировать, то на строке
jjj:=lpdwProcessId^;
опять же access violation, что я делаю не так?
Bukerman (2002-12-16 17:00:00) [1]Бооольшое спасибо!Вроде помогло.
MBo (2002-12-16 16:25:00) [2]Пардон
ProcessId : DWORD;
GetWindowThreadProcessId(Wnd, @ProcessId);
Zz_ (2002-12-16 16:18:00) [3]lpdwProcessId := @jjj;
GetWindowThreadProcessId(Wnd, lpdwProcessId);
MBo (2002-12-16 16:18:00) [4]ProcessId : DWORD;
GetWindowThreadProcessId(Wnd, ProcessId);