I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
Du kan fange det på classname eller caption på formen.
Stoney
Synes godt om
Slettet bruger
04. november 2003 - 15:17#2
Hvis du kender exe filens navn kan du bruge denne kode:
Uses TlHelp32;
Type TEnumData = Record hW: HWND; pID: DWORD; End;
Function EnumProc( hw: HWND; Var data: TEnumData ): Bool; stdcall; Var pID: DWORD; Begin Result := True; If (GetWindowLong(hw, GWL_HWNDPARENT) = 0) and (IsWindowVisible( hw ) or IsIconic(hw)) Then Begin GetWindowThreadProcessID( hw, @pID ); If pID = data.pID Then Begin data.hW := hW; Result := False; End; { If } End; { If } End; { EnumProc }
Function WindowFromProcessID( pID: DWORD ): HWND; Var data: TEnumData; Begin data.pID := pID; data.hW := 0; EnumWindows( @EnumProc, longint(@data) ); Result := data.hW; End; { WindowFromProcessID }
Function WindowFromAppname32( appname: String ): HWND; { Take only the application filename, not full path! Need to pass the extension as well. } Var snapshot: THandle; processEntry : TProcessEntry32; Begin Result := 0; snapshot := CreateToolhelp32Snapshot( TH32CS_SNAPPROCESS, 0 ); If snapshot <> 0 Then try processEntry.dwSize := Sizeof( processEntry ); If Process32First( snapshot, processEntry ) Then Repeat If AnsiCompareText( appname, ExtractFilename( StrPas(processEntry.szExeFile)) ) = 0 Then Begin Result:= WindowFromProcessID( processEntry.th32ProcessID); Break; End; { If } Until not Process32Next( snapshot, processEntry ); finally CloseHandle( snapshot ); End; { try } End; { WindowFromAppname32 }
procedure TForm1.Button1Click(Sender: TObject); begin if WindowFromAppname32('project1.exe') <> 0 then ShowMessage('Programmet kører'); end;
Synes godt om
Slettet bruger
04. november 2003 - 18:21#3
og hvis det ikke kører
if WindowFromAppname32('project1.exe') <> 0 ?? hvad skal så ændres skal den så ændres til <0
Synes godt om
Slettet bruger
04. november 2003 - 18:23#4
Nej, du skal bruge = : if WindowFromAppname32('project1.exe') = 0 then
Synes godt om
Slettet bruger
04. november 2003 - 18:43#5
if WindowFromAppname32('project1.exe') = 0 then ShowMessage('Programmet er lukket');
hvordan kan man styre ('project1.exe') hvad der skal stå via et Tedit.
sådan at det er en variabel i en Tedit som ændrer "project1.exe" til project2.exe. hvis du forstår hvad jeg mener...
Synes godt om
Slettet bruger
04. november 2003 - 18:54#6
Tror det er det her du mener:
if WindowFromAppname32(Edit1.Text) = 0 then ShowMessage('Programmet er lukket');
Synes godt om
Slettet bruger
04. november 2003 - 19:22#7
næ ikke helt for så er project1.exe en konstant, og man kan kun lukke project1.exe
hvis teksten i en Tedit er project2.exe ændres "project2.exe" i WindowFromAppname32(project2.exe)da man ikke altid ved hvad brugeren indtaster i editfeltet, kunne project1.exe ikke være en variabel, så hvis man skrev i editfeltet project1.exe eller project2.exe så lukkes programmerne alt efter hvad der står i editfeltet. Håber du forstår hvad jeg mener.
Synes godt om
Slettet bruger
04. november 2003 - 19:33#8
Er ik helt sikker på hvad du mener, men hvis du skal lukke programmerne kan du bruge denne kode:
uses Tlhelp32;
function KillTask(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.szExeFile)) = 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;
procedure TForm1.Button1Click(Sender: TObject); begin KillTask(Edit1.Text); end;
Hvis du f.eks. skriver Project1.exe i Edit1 lukker den project1.exe.
Synes godt om
Slettet bruger
04. november 2003 - 19:54#9
yepper det var hvad jeg mente...gud hvor indlysende når man ser det.gg
takker
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.