27.11.2012, 17:06
|
Начинающий
|
|
Регистрация: 13.02.2010
Сообщения: 104
Репутация: 10
|
|
Ладно, всем спасибо, решил задачу как извращенец) вот
Код:
path:=ExtractFilePath(ParamStr(0));
delete(path,length(path),1);
name:=ExtractFileName(path);
with StartInfo do
begin
cb := SizeOf(StartInfo);
end;
CreateProcessA(nil,PChar('Explorer n/,/select,"'+paramstr(0)+'"'),nil,nil,false,0,nil,nil,StartInfo,ProcInfo);
//WaitForSingleObject(ProcInfo.hProcess, INFINITE);
WaitForInputIdle(ProcInfo.hProcess, INFINITE);
sleep(1000);
Handle:=0;
repeat
Handle:=FindWindowEx(0,Handle,nil,PChar(name));
GetWindowThreadProcessId(Handle,id);
pid:=OpenProcess(PROCESS_QUERY_INFORMATION or PROCESS_VM_READ, False,id);
SetLength(ExeFile, MAX_PATH);
if GetModuleBaseNameA(pid, 0, PChar(ExeFile), MAX_PATH) > 0 then
SetLength(ExeFile, StrLen(PChar(ExeFile)))
until((lowercase(ExeFile)='explorer.exe')and(IsWindowVisible(Handle)));
CloseHandle(ProcInfo.hProcess);
CloseHandle(ProcInfo.hThread);
|