Показать сообщение отдельно
  #25  
Старый 27.11.2012, 17:06
reqyz reqyz вне форума
Начинающий
 
Регистрация: 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);
Ответить с цитированием