![]() |
AW: Aufruf von Windows Snipping Tool und Remotehilfe
Hmm..
Das funktioniert: Zitat:
Delphi-Quellcode:
uses
ShellApi; // https://stackoverflow.com/questions/2833021/how-to-get-absolute-path-from-path-with-system-path-variables function ExpandEnvStr(const szInput: string): string; const MAXSIZE = 32768; begin SetLength(Result,MAXSIZE); SetLength(Result,ExpandEnvironmentStrings(pchar(szInput), @Result[1],length(Result)) - 1); end; procedure TForm1.Button1Click(Sender: TObject); begin ShellExecute(Application.Handle, 'open', pchar(ExpandEnvStr('%windir%\sysnative\SnippingTool.exe')), nil, nil, sw_show); end; Getestet mit Delphi 6 (somit 32 bit). SnippingTool wird gestartet... Ein 'System64' hab ich nicht unter meinem 64Bit W8.1, nur das bekannte 'SysWOW64'... |
AW: Aufruf von Windows Snipping Tool und Remotehilfe
Das funktioniert auch es werden sogar meine Icons korrekt eingelesen.
![]() Musste aber noch einiges ändern.. aber was soll's.
Delphi-Quellcode:
function ChangeFSRedirection(bDisable: BOOL): BOOL;
type TWow64DisableWow64FsRedirection = function(var Wow64FsEnableRedirection: BOOL): BOOL; stdcall; TWow64EnableWow64FsRedirection = function(var Wow64FsEnableRedirection: BOOL): BOOL; stdcall; function Is64Bit: Boolean; var Reg: TRegistry; begin Reg := TRegistry.Create; Reg.RootKey := HKEY_LOCAL_MACHINE; Result := Reg.KeyExists('\SOFTWARE\Wow6432Node'); Reg.Free; end; var Handle: THandle; Wow64DisableWow64FsRedirection: TWow64DisableWow64FsRedirection; Wow64EnableWow64FsRedirection: TWow64EnableWow64FsRedirection; Wow64FsEnableRedirection: BOOL; begin Result := true; if not Is64Bit then exit; try Handle := GetModuleHandle('kernel32.dll'); @Wow64EnableWow64FsRedirection := GetProcAddress(Handle, 'Wow64EnableWow64FsRedirection'); @Wow64DisableWow64FsRedirection := GetProcAddress(Handle, 'Wow64DisableWow64FsRedirection'); if ((Handle <> 0) and (@Wow64EnableWow64FsRedirection <> nil) and (@Wow64DisableWow64FsRedirection <> nil)) then if bDisable then Wow64DisableWow64FsRedirection(Wow64FsEnableRedirection) else Wow64EnableWow64FsRedirection(Wow64FsEnableRedirection); except Result := false; end; end;
Delphi-Quellcode:
gruss
ChangeFSRedirection(true);
ShellExecuteW(0, nil, PWideChar('C:\Windows\System32\SnippingTool.exe'), nil, nil, SW_SHOW); ChangeFSRedirection(false); |
AW: Aufruf von Windows Snipping Tool und Remotehilfe
Zitat:
Grüße |
AW: Aufruf von Windows Snipping Tool und Remotehilfe
Hallo zusammen,
danke für Euer zahlreiches Feedback. Anbei die Lösung, die bei mir die gewünschten Ergebnisse bringt (inkl. Aufruf von quickassist.exe) // Begin Helferfunktion zum Aufruf SnippingTool und quickassist function ExpandEnvStr(const szInput: string): string; const MAXSIZE = 32768; begin SetLength(Result,MAXSIZE); SetLength(Result,ExpandEnvironmentStrings(pchar(sz Input), @Result[1],length(Result)) - 1); end; // Aufruf SnippingTool (Screenshot Tool) procedure Formular.SnippingToolClick(Sender: TObject); var kError : Integer; begin kError := ShellExecute(Application.Handle, 'open', pchar(ExpandEnvStr('%windir%\sysnative\SnippingToo l.exe')), nil, nil, sw_show); if kError < 33 then begin ShowMessage(Format('Die Anwendung kann nicht gestartet werden. Fehlercode: %d!',[kError])); end; end; // Aufruf Quickassist (Teamviewer Ersatz App nur unter Windows 10) // ![]() procedure Formular.QuickAssistClick(Sender: TObject); var lError : Integer; begin lError := ShellExecute(Application.Handle, 'open', pchar(ExpandEnvStr('%windir%\system32\quickassist. exe')), nil, nil, sw_show); if lError < 33 then begin ShowMessage(Format('Die Anwendung kann nicht gestartet werden. Fehlercode: %d!',[lError])); end; end; VG !! |
AW: Aufruf von Windows Snipping Tool und Remotehilfe
Zitat:
Hat sich für mich auch erledigt so wie du sehen kannst ;) Ich jage alle Dateien durch die ChangeFSRedirection und gut ist. Zitat:
Danke! gruss |
AW: Aufruf von Windows Snipping Tool und Remotehilfe
@EWeiss: Ja schon klar, aber angenommen, nurmal angenommen, ich prüfe den PE-Header ob 32/64 um dann dein ChangeFSRedirection(32/64) zu bestimmen/benutzen. So meint ich es. (bzw oder die andere methode von stackoverflow)
Oder sobald \system32\ drinn vorkommt ohne PE prüfung, oder oder oder, wie immer gibt es mehr als einen Weg um ans Ziel zu kommen :-) Ich pers. mag beide Varianten und hab sie in meine Tipps Datenbank aufgenommen. Grüße |
AW: Aufruf von Windows Snipping Tool und Remotehilfe
Zitat:
gruss |
AW: Aufruf von Windows Snipping Tool und Remotehilfe
Zitat:
@EWeiss: Windows bietet bereits eine Funktion zur Bestimmung der Bittigkeit: ![]() Und immer schön darauf achten, die Redirection nur kurzzeitig zu deaktivieren. Denn es funktioniert z.B. nicht, eine DLL aus \Windows\System32 zu laden, während sie deaktiviert ist (weil 32 bit Prozesse nunmal keine 64 bit DLLs laden können, und umgekehrt). Noch kurz bzgl. des Löschens des bei dir vorhandenen System64: Wenn es wirklich eine Junction ist, kann man die löschen. Ich rate aber dazu, einen Dateimanager (oder die CMD) zu verwenden und nicht den Explorer. Es wird immer wieder behauptet, der Explorer könne nicht sauber mit diesen NTFS-Eigenschaften umgehen und würde bei einem Löschvorgang nicht nur die Junction an sich sondern auch alles entsorgen, worauf die Junction zeigt. Ich hab das irgendwann mal ausprobiert, und konnte das nicht bestätigen. Aber wie sagen die Angelsachsen so schön: Better safe than sorry. Grüße Dalai |
AW: Aufruf von Windows Snipping Tool und Remotehilfe
Zitat:
Denn beides ist das gleiche. BOOL: LongBool Zitat:
Und dann nur einmal beim starten der Anwendung danach direkt wieder ein. Zitat:
Nein ich denke der weg über die registry ist die bessere Alternative. Zitat:
gruss |
AW: Aufruf von Windows Snipping Tool und Remotehilfe
Zitat:
Zitat:
Grüße Dalai |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:48 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