Einzelnen Beitrag anzeigen

Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#36

AW: Programm für schließung eines Programes in der Taskleiste rechts neben der Uhr

  Alt 28. Jan 2011, 08:32
Letzter Versuch (nicht großartig getestet):
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
const
  NameDesProgramms = 'TripoX Keybinder 0.1a.exe';
var
  StartupInfo: TStartupInfoA;
  ProcessInfo: TProcessInformation;
begin
  ZeroMemory(@StartupInfo, SizeOf(StartupInfo));
  StartupInfo.cb := SizeOf(StartupInfo);
  StartupInfo.dwFlags := STARTF_USESHOWWINDOW;
  StartupInfo.wShowWindow := SW_SHOW;
  if CreateProcessA(nil, PAnsiChar(NameDesProgramms), nil, nil, false,
    CREATE_NEW_CONSOLE or NORMAL_PRIORITY_CLASS, nil, nil, StartupInfo,
    ProcessInfo) then
    try
      PID := ProcessInfo.dwProcessId; //PID ist eine private DWORD-Variable
    finally
      CloseHandle(ProcessInfo.hProcess);
      CloseHandle(ProcessInfo.hThread);
    end;
end;

procedure TForm1.Button2Click(Sender: TObject);

  function EnumWindowsProc(Wnd: HWnd; aPID: DWORD): BOOL; stdcall;
  var
    hProcess: DWORD;
  begin
    GetWindowThreadProcessID(Wnd, hProcess);
    if hProcess = aPID then
      PostMessage(Wnd, WM_SYSCOMMAND, SC_CLOSE, 0);
    Result := true;
  end;

begin
  if PID <> 0 then
    EnumWindows(@EnumWindowsProc, PID);
end;
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat