![]() |
Kommandozeile aus Programm
Hallo liebes Forum,
ich möchte in einem Delphiprogramm folgendes in der Kommandozeile aufrufen:
Code:
Allerdings möchte ich dafür keine Batch schreiben und dann diese Aufrufen. Es soll wirklich hart in den Quellcode geschrieben werden, dass er die Kommandozeile ausführen soll mit dem oben geschriebenen "Parametern".
cmdkey /add:server7 /user:domäne\user /pass:"passwort"
Wie funktioniert sowas? Grüße |
AW: Kommandozeile aus Programm
|
AW: Kommandozeile aus Programm
ShellExecute hab ich schon in 1000 verschiedenen Varianten probiert bis jetzt hat noch nichts funktioniert...:cry:
|
AW: Kommandozeile aus Programm
Oder schau Dir
![]() |
AW: Kommandozeile aus Programm
Zitat:
|
AW: Kommandozeile aus Programm
Zitat:
Grüße Dalai |
AW: Kommandozeile aus Programm
Schon mal so probiert?
Delphi-Quellcode:
Wenn ja, was passiert (nicht)?
Programm := 'cmdkey';
Parameter := /add:server7 /user:domäne\user /pass:"passwort"; Shellexecute(Handle, 'open', PChar(Programm), PChar(Parameter), nil, SW_SHOW); |
AW: Kommandozeile aus Programm
Ich Benutze diese Funktion zum Installieren von Diensten
Die Funktion wartet darauf das die Anwendung zurückkehrt. Wenn du das nicht willst musste das ausbauen. Die bedingte Compilierung je nach Framework evtl auch ausbauen.
Delphi-Quellcode:
Procedure TKannDiensteKram.SetInstalledAsService(aValue : Boolean);
Begin if aValue <> GetInstalledAsService then Begin if aValue then Begin ExecAndWait(ServiceExe, '/install /silent', 60000, SW_SHOWNORMAL, true); end else Begin ExecAndWait(ServiceExe, '/uninstall /silent', 60000, SW_SHOWNORMAL, true); End; End; End; function TKannDiensteKram.ExecAndWait(Filename, Params: string; TimeOut:int64=-1 ; WindowState: word = SW_SHOWNORMAL; elevated:Boolean = false): boolean; var ShExecInfo: SHELLEXECUTEINFO; started,h_res : Cardinal; const SEE_MASK_NOASYNC= $100; begin Result := false; if Filename = '' then exit; if not FileExists(FileName) then Begin {$IFDEF FrameWork_VCL} ShowMessage('Datei nicht existent!'); {$ENDIF} {$IFDEF FrameWork_FMX} TDialogService.ShowMessage('Datei nicht existent!'); {$ENDIF} Exit; End; ZeroMemory(@ShExecInfo, SizeOf(ShExecInfo)); ShExecInfo.Wnd := 0; ShExecInfo.cbSize := sizeof(SHELLEXECUTEINFO); ShExecInfo.fMask := SEE_MASK_NOCLOSEPROCESS or SEE_MASK_NOASYNC; if elevated then ShExecInfo.lpVerb := 'runas' else ShExecInfo.lpVerb := 'open'; //'run as' statt 'open' ist für Systeme ab Vista evtl. besser ShExecInfo.lpFile := PChar(Filename); ShExecInfo.lpParameters := PChar(Params); ShExecInfo.lpDirectory := PChar(ExtractFileDir(Filename)); ShExecInfo.nShow := WindowState; Result := ShellExecuteEx(@ShExecInfo); if Result then begin started := Gettickcount; repeat h_res := MsgWaitForMultipleObjects(1, ShExecInfo.hProcess, False, TimeOut, QS_ALLINPUT); if h_res <> WAIT_OBJECT_0 then Application.ProcessMessages; until (h_res = WAIT_OBJECT_0) or ( (Timeout >-1) and ( Started + TimeOut < GetTickCount )) ; if (timeout > -1) then Result := not( Started + TimeOut < GetTickCount ); CloseHandle(ShExecInfo.hProcess); end else {$IFDEF FrameWork_VCL} Showmessage('Fehler beim Installieren des Dienstes:' + Filename + #13#10'System Fehler: ' + SysErrorMessage(GetLastError)); {$ENDIF} {$IFDEF FrameWork_FMX} TDialogService.Showmessage('Fehler beim Installieren des Dienstes:' + Filename + #13#10'System Fehler: ' + SysErrorMessage(GetLastError)); {$ENDIF} End; |
AW: Kommandozeile aus Programm
Allllso, gestern nochmal ein Stück probiert und der Fehler ist mir aufgefallen.
Ich habe bis jetzt immer über ShellExecute versucht das Programm
Code:
mit den Parametern
cmd.exe
Code:
aufzurufen.
cmdkey /add:server3 ....
Gestern ist mir dann aufgefallen das es ja auch die
Code:
gibt.
cmdkey.exe
Also neuer Versuch mit ShellExecute das Programm
Code:
mit den Parametern
cmdkey.exe
Code:
aufzurufen.
/add:server3 ....
Und siehe da es klappt. Stand anscheinend ganz schön auf den Schlauch. Trotzdem natürlich Danke für die Antworten. Gruß |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:08 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 by Thomas Breitkreuz