Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Mein Programm mit einem anderen gleichzeitig starten (https://www.delphipraxis.net/24466-mein-programm-mit-einem-anderen-gleichzeitig-starten.html)

DaFox 28. Jul 2004 23:43

Re: Mein Programm mit einem anderen gleichzeitig starten
 
Hi!

Zitat:

Zitat von Luckie
Entweder mit FindWindow das fenster suchen oder mit einem Snapshot kucken, ob die Exe läuft.

Oder per Treiber (PsSetCreateProcessNotifyRoutine) oder per WMI.

Gruß,
Markus

Luckie 28. Jul 2004 23:48

Re: Mein Programm mit einem anderen gleichzeitig starten
 
Wozu mit Spatzen auf Kanonen schießen?

XHelp 29. Jul 2004 00:11

Re: Mein Programm mit einem anderen gleichzeitig starten
 
Kommt drauf an, für welche das genutzt wird und was es für ein programm ist.

Die frage lautete:
Zitat:

Wie kann ich mein Programm gleichzeitig mit einem anderen [...] starten lassen
Und nicht: Wie kann ich rausfinden, ob ein anderes Programm läuft, oder nicht?
Deswegen passt meine Antwort genau rein :roll: :wink:

Luckie 29. Jul 2004 00:17

Re: Mein Programm mit einem anderen gleichzeitig starten
 
Wieso? Ich prüfe in einer Schleife, am besten in einem Thread, ob die andere Anwendung läuft und wenn sie es tut starte ich meine.

XHelp 29. Jul 2004 00:55

Re: Mein Programm mit einem anderen gleichzeitig starten
 
Und wo kriegst du die schlefe her? Dafür muss du noch ein extra programm schreiben. Vielleicht passt das geisi nicht...k.a.
Wenn die Lösung passt, dann hier der quellcode dafür:

Delphi-Quellcode:
function FindTask(ExeFileName: string): boolean;
const
  PROCESS_TERMINATE=$0001;
var
  ContinueLoop: BOOL;
  FSnapshotHandle: THandle;
  FProcessEntry32: TProcessEntry32;
begin
  result:=false;
  FSnapshotHandle := CreateToolhelp32Snapshot
                     (TH32CS_SNAPPROCESS, 0);
  FProcessEntry32.dwSize := Sizeof(FProcessEntry32);
  ContinueLoop := Process32First(FSnapshotHandle,
                                 FProcessEntry32);

  while integer(ContinueLoop) <> 0 do
  begin
    if ((UpperCase(ExtractFileName(FProcessEntry32.szExeFile)) =
         UpperCase(ExeFileName))
     or (UpperCase(FProcessEntry32.szExeFile) =
         UpperCase(ExeFileName))) then
      Result := true;
    ContinueLoop := Process32Next(FSnapshotHandle,
                                  FProcessEntry32);
  end;

  CloseHandle(FSnapshotHandle);
end;
Eigentlich wurde die funktion dazu gedacht, tasks zu killen, aber ich habe sie ein bischen verändert... aus diesem grund geht das vielleicht auch einfacher. Die prozedur funktioniert aber.

Jetzt braucht man mit einem Timer, oder so,
Delphi-Quellcode:
if FindTask('winamp3.exe')=true then
   ShellExecute(Handle,'open',PChar('c:\MySoft\BlaBla.exe'),nil,nil,SW_RESTORE);
aufzurufen und das war's.

Luckie 29. Jul 2004 01:03

Re: Mein Programm mit einem anderen gleichzeitig starten
 
Delphi-Quellcode:
while NichtGefunden do
Oder ab 2000 eleganter mit MSDN-Library durchsuchenCreateTimerQueueTimer.

Robert Marquardt 29. Jul 2004 07:38

Re: Mein Programm mit einem anderen gleichzeitig starten
 
Es geht auch mit einem WH_SHELL Hook.


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:36 Uhr.
Seite 2 von 2     12   

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