Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Shellexecute Problem (https://www.delphipraxis.net/17056-shellexecute-problem.html)

CTV 27. Feb 2004 14:04


Shellexecute Problem
 
hallo

Ich verwnde folgende Procedure um eine App zu starten und zu warten bis sie zu ende ist.

Delphi-Quellcode:
uses
  ShellApi;

procedure ShellExecute_AndWait(FileName: string; Params: string);
var
  exInfo: TShellExecuteInfo;
  Ph: DWORD;
begin
  FillChar(exInfo, SizeOf(exInfo), 0);
  with exInfo do
  begin
    cbSize := SizeOf(exInfo);
    fMask := SEE_MASK_NOCLOSEPROCESS or SEE_MASK_FLAG_DDEWAIT;
    Wnd := GetActiveWindow();
    ExInfo.lpVerb := 'open';
    ExInfo.lpParameters := PChar(Params);
    lpFile := PChar(FileName);
    nShow := SW_SHOWNORMAL;
  end;
  if ShellExecuteEx(@exInfo) then
    Ph := exInfo.HProcess
  else
  begin
    ShowMessage(SysErrorMessage(GetLastError));
    Exit;
  end;
  while WaitForSingleObject(ExInfo.hProcess, 50) <> WAIT_OBJECT_0 do
    Application.ProcessMessages;
  CloseHandle(Ph);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  ShellExecute_AndWait('FileName', 'Parameter');
end;
Es funktioniert eigentlich prima, jedoch haben mir einige Leute die mit WinXp arbeiten gesagt dass bie ihnen keine APP gestartet wird. Sondern nur der FileExploerer geöffnet wird. ich hab das dann auch nochmal mit winXp probiert bei mir gings dann wieder. An was kann das liegen ? Was ist an der XP version falsch damit es bei einigen geht und bei anderen wiederum nicht ? weiss jemand an was das liegen könnte ?

greetz Cyrus

Luckie 27. Feb 2004 14:24

Re: Shellexecute Problem
 
Das wirtklich wichtige teilst du uns leider nicht mit, mit welchen Parametern du die Funktion aufrufst, 'Filename' und 'Paramter' wird es ja wohl nicht sein. :roll:

ims 27. Feb 2004 14:39

Re: Shellexecute Problem
 
hi CTV

hatte auch mal das problem und zwar war immer dann, wenn die zu startende app nicht gefunden wurde. wenn ich mit meinem progi c:\test.exe ausführen wollte und die exe aber nicht an diesem ort lag, dann passierte genau das gleiche. es öffnete sich nur der file explorer...


gruss, dave

CTV 27. Feb 2004 14:41

Re: Shellexecute Problem
 
Delphi-Quellcode:
var filename,param:string;
begin
  filename:=extractfilepath(application.exenmae)+'disk11\setup.exe);
  param:='einpasswort';
  ShellExecute_AndWait(filename, param);
end;
Das ist ein Setup welches mit wise8 erstellt worden ist. und damit man das nicht von hand starten kann hats in dem wise setup noch eine paramstr. überprüfung quasi ein passwort. Das Setup wird nur dann gestartet wenn der param stimmt. und diesen param also das pw geb ich über die obige angabe mit. klappt auch leider aber nicht auf allen rechnern.

greetz Cyrus

CTV 27. Feb 2004 14:43

Re: Shellexecute Problem
 
@ims
währe eine erklährung dass es ned geht wenn die exe nicht gefunden wird. jedoch gehts ja auf anderen rechnern. ich hab das auf ne cd gebrannt. und dann auf verschiedenen rechnern getestet bei manchen gehts bei manchen nicht. kann ja ned sein dass er s einmal findet und einmal ned ? oder geht das application.exename ned auf allen systemen ?

greetz Cyrus


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:59 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz