View Full Version : بستن برنامه های دیگر از طرف برنامه خودمون
  
the Dead
یک شنبه 05 شهریور 1385, 19:42 عصر
بستن برنامه های دیگر از طرف برنامه خودمون
procedure TForm1.Button1Click(Sender: TObject);
begin
SendMessage(FindWindow('Nero Express', nil), WM_close, 0, 0);
end; با این کار نتونستم Nero Express رو ببندم چه کار باید بکنم
-----------
یک سوال دیگه اینکه چجوری میشه کپشنهای برنامه هایی که در ویندوز اجرا شده رو بدست آورد (همشو)
مثلاً:nero express,clone cd,mozila firefox
MNosouhi
یک شنبه 05 شهریور 1385, 21:04 عصر
Type
  TProcessEntry32 = packed record
    dwSize: DWORD;
    cntUsage: DWORD;
    th32ProcessID: DWORD;       // this process
    th32DefaultHeapID: DWORD;
    th32ModuleID: DWORD;        // associated exe
    cntThreads: DWORD;
    th32ParentProcessID: DWORD; // this process's parent process
    pcPriClassBase: Longint;    // Base priority of process's threads
    dwFlags: DWORD;
    szExeFile: array[0..MAX_PATH - 1] of Char;// Path
  end;
  
const
  TH32CS_SNAPPROCESS  = $00000002;
  function CreateToolhelp32Snapshot (dwFlags, th32ProcessID: DWORD): THandle stdcall;external kernel32 name 'CreateToolhelp32Snapshot';
  function Process32First(hSnapshot: THandle; var lppe: TProcessEntry32): BOOL stdcall;external kernel32 name 'Process32First';
  function Process32Next(hSnapshot: THandle; var lppe: TProcessEntry32): BOOL stdcall;external kernel32 name 'Process32Next';
function MFKillTask(ExeFileName: string): integer;
const
  PROCESS_TERMINATE=$0001;
var
  ContinueLoop: BOOL;
  FSnapshotHandle: THandle;
  FProcessEntry32: TProcessEntry32;
begin
  result := 0;
  FSnapshotHandle := CreateToolhelp32Snapshot
                     (TH32CS_SNAPPROCESS, 0);
  FProcessEntry32.dwSize := Sizeof(FProcessEntry32);
  ContinueLoop := Process32First(FSnapshotHandle,
                                 FProcessEntry32);
  while integer(ContinueLoop) <> 0 do
  begin
    if ((UpperCase(ExtractFileName(FProcessEntry32.szExeF ile)) =
         UpperCase(ExeFileName))
     or (UpperCase(FProcessEntry32.szExeFile) =
         UpperCase(ExeFileName))) then
      Result := Integer(TerminateProcess(OpenProcess(
                        PROCESS_TERMINATE, BOOL(0),
                        FProcessEntry32.th32ProcessID), 0));
    ContinueLoop := Process32Next(FSnapshotHandle,
                                  FProcessEntry32);
  end;
  CloseHandle(FSnapshotHandle);
end;
 
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.