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 Mein Programm mit einem anderen gleichzeitig starten (https://www.delphipraxis.net/24466-mein-programm-mit-einem-anderen-gleichzeitig-starten.html)

geisi 21. Jun 2004 15:41


Mein Programm mit einem anderen gleichzeitig starten
 
Wie kann ich mein Programm gleichzeitig mit einem anderen, z.B.: Winamp.exe starten lassen
sprich: Wenn ich winamp.exe mit einem Doppleclick öffne, möchte ich, dass mein programm automatisch auch geöffnet wird

WIE??????

Danke im Voraus

fkerber 21. Jun 2004 15:43

Re: Mein Programm mit einem anderen gleichzeitig starten
 
Hi!

Gibt wohl nur 2 Möglichkeiten:
Du benennst die Winamp.exe um, nennst dein Programm so und als erste Aktion deines Programm startest du die umbenannte Exe oder dein Programm nistet sich in die TNA ein und guckt immer, ob winamp läuft. Falls ja, dann startet es sich richtig.

Ciao fkerber

Ultimator 21. Jun 2004 15:45

Re: Mein Programm mit einem anderen gleichzeitig starten
 
Zitat:

Exe oder dein Programm nistet sich in die TNA ein und guckt immer, ob winamp läuft
Was man über Hooks lösen könnte :wink:

alcaeus 21. Jun 2004 16:49

Re: Mein Programm mit einem anderen gleichzeitig starten
 
Zitat:

Zitat von geisi
Wie kann ich mein Programm gleichzeitig mit einem anderen, z.B.: Winamp.exe starten lassen
sprich: Wenn ich winamp.exe mit einem Doppleclick öffne, möchte ich, dass mein programm automatisch auch geöffnet wird

WIE??????

Danke im Voraus

Naja, Bitte. Erklär mal überhaupt, wieso du das machen lassen willst? Die Sache kann nämlich auch für sehr, sehr böse Zwecke genutzt werden.

Greetz
alcaeus

HaCkAttaCk2001 22. Jun 2004 21:33

Re: Mein Programm mit einem anderen gleichzeitig starten
 
Zitat:

Zitat von alcaeus
Naja, Bitte. Erklär mal überhaupt, wieso du das machen lassen willst? Die Sache kann nämlich auch für sehr, sehr böse Zwecke genutzt werden.

Greetz
alcaeus

Hi.

Ist das nicht egal? Wenn er etwas für böse Zwecke programmieren möchte, dann kann er das doch auch tun, oder etwa nicht? Hab gedacht das hier sei ein Programmiererforum und kein Moralforum?!

Übrigens: Wenn das Programm von dir im TNA (oder unsichtbar...) läuft, kannst du es auch über FindWindow machen, um dir Hooks zu ersparen ^^ .

C ya.

PS: Ansonsten geht das gleichzeitig starten wohl nur mit nem Joiner, der die Anwendungen verbindet, doch die meisten Antivirensoftwares halten ganz und gar nix davon...

Thorben86 22. Jun 2004 21:58

Re: Mein Programm mit einem anderen gleichzeitig starten
 
Aber es ist in der Delphi-Praxis nicht erwünscht, Hilfe für illegale Programme zu geben.

Wenn dies der Fall wäre, wird der nächste Mod, der dieser Meinung ist, hier dichtmachen, darum ist es nicht egal.

€dit: Er kann uns ja vom gegenteil überzeugen.

Christian Seehase 22. Jun 2004 22:02

Re: Mein Programm mit einem anderen gleichzeitig starten
 
[OT]
Moin HaCkAttaCk2001,

Zitat:

Zitat von HaCkAttaCk2001
Ist das nicht egal?

Hier nicht, denn

Zitat:

Zitat von HaCkAttaCk2001
Wenn er etwas für böse Zwecke programmieren möchte, dann kann er das doch auch tun, oder etwa nicht?

Stimmt, aber nicht mit Hilfe dieses Forums (zumindest nicht wissentlich).

Zitat:

Zitat von HaCkAttaCk2001
Hab gedacht das hier sei ein Programmiererforum und kein Moralforum?!

Moral ist hier nicht der Punkt.

Und bitte hier in diesem Thread jetzt keine weiteren Diskussionen, die nicht zum Thema des Threads gehören.
Danke.
[/OT]

HaCkAttaCk2001 28. Jul 2004 21:18

Re: Mein Programm mit einem anderen gleichzeitig starten
 
Hi.

OK Mami :zwinker: .

Zum Thema: du könntest das Programm, das mit deinem mitgestartet werden soll, in die Ressourcen deines Programms einbinden. Du erstellst eine Ressourcen-Datei, z.b.: Winamp.rc mit dem Inhalt
Delphi-Quellcode:
winamp EXEFILE winamp.exe
Die Winamp.rc fügst du nun deinem Projekt hinzu. Jetzt kompiliert Delphi jedes mal wenn du das Projekt kompilierst, auch die winamp.exe mit in deine Ressourcen des Delphiprojektes mit hinein. Die Winamp.exe müsste im Beispiel natürlich im Ordner deines Delphiprojektes liegen ;) .

Wenn du die Datei aus deinem Programm holen willst, wenn es läuft, brauchst du diesen Code (den hab ich hier mal irgendwo aufgestöbert, wenn jemand auf sein © pochen will, dann bitte bei mir melden):

Delphi-Quellcode:
procedure Res2Temp;
var
  rs: TCustomMemoryStream;
  s : String;
begin
  s := 'winamp';
  try
    RS := TResourceStream.Create(hInstance, S, 'EXEFILE');
    RS.SavetoFile('winamp.exe');
  finally
    RS.Free;
  end;
end;
Aufrufen würdest du das ganze dann mit:
Delphi-Quellcode:
Res2Temp;
Wenn du das Programm dann noch starten lassen willst, geht das mit:
Delphi-Quellcode:
ShellExecute(0,nil,PChar(ExtractFilePath(ParamStr(0))+'\winamp.exe'),nil,nil,SW_NORMAL);
Zu den guten Einsatzmöglichkeiten:
Du könntest damit z.b. ein Programm basteln, welches den MSN-Nicknamen je nach Winamp-Titel ändert. So kannst du sicher gehen, dass WinAmp auch läuft ^^. Der User hat somit ein Problem weniger (nämlich erst noch Winamp zu starten ;) ) .


C ya!

Luckie 28. Jul 2004 22:53

Re: Mein Programm mit einem anderen gleichzeitig starten
 
Wozu ein Hook? Entweder mit FindWindow das fenster suchen oder mit einem Snapshot kucken, ob die Exe läuft.

XHelp 28. Jul 2004 23:28

Re: Mein Programm mit einem anderen gleichzeitig starten
 
Man kann es auch mit einem Joiner machen. (1.exe + 2.exe = 3.exe, die 1.exe und 2.exe startet)
Ich habe ein paar Joiner's mit quelltext zuhause. Die sind fast alle mit assembler geschrieben, aber ich habe auch welche fürs delphi.

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 17:23 Uhr.

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