|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Странный Explorer в Windows 7
Задача казалась бы очень лёгкая, но столкнулся с необычным глюком. Нужно всего лишь запустить процесс Проводника и получить Хэндл его главной формы.
Делаю так: Код:
var Handl:HWND=0; function EnumProc(h:HWND; lParam:DWord):boolean; stdcall; begin handl:=h; Result:=handl=0; end; var StartInfo: TStartupInfo; ProcInfo: TProcessInformation; begin with StartInfo do begin cb := SizeOf(StartInfo); {dwFlags := STARTF_USESHOWWINDOW or STARTF_USESTDHANDLES; StartInfo.wShowWindow:=SW_show;//hide; } end; CreateProcessA(nil,{PChar('Explorer n/,/select,"'+paramstr(0)+'"')}'Explorer.exe',nil,nil,false,0,nil,nil,StartInfo,ProcInfo); //WaitForSingleObject(ProcInfo.hProcess, INFINITE); WaitForInputIdle(ProcInfo.hProcess, INFINITE); EnumThreadWindows(ProcInfo.dwThreadId,@EnumProc,0); CloseHandle(ProcInfo.hProcess); CloseHandle(ProcInfo.hThread); end. Думал что может для проводника не так с окнами что либо, потестил через таймер: Код:
procedure TForm1.Timer1Timer(Sender: TObject); var a:TPoint; begin GetCursorPos(a); Caption:=inttostr(WindowFromPoint(a)); end; Внимание, Вопрос: что не так в первом коде? ну и почему для блокнота и др работает, EnumThreadWindows и EnumWindows для проводника ничего не находят, но ведь окно есть, я же нашёл его... спасите мой глюк) |