AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Aufruf von Windows Snipping Tool und Remotehilfe
Thema durchsuchen
Ansicht
Themen-Optionen

Aufruf von Windows Snipping Tool und Remotehilfe

Ein Thema von Bornholdt · begonnen am 30. Jan 2018 · letzter Beitrag vom 31. Jan 2018
Antwort Antwort
HolgerX

Registriert seit: 10. Apr 2006
Ort: Leverkusen
989 Beiträge
 
Delphi 6 Professional
 
#1

AW: Aufruf von Windows Snipping Tool und Remotehilfe

  Alt 31. Jan 2018, 04:31
Hmm..


Das funktioniert:

Eventuell so:

  ShellExecute(Application.Handle, 'open', pchar(ExpandEnvStr('%windir%\sysnative\SnippingTool.exe')), nil, nil, sw_show); Siehe hier:

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'...
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#2

AW: Aufruf von Windows Snipping Tool und Remotehilfe

  Alt 31. Jan 2018, 04:45
Das funktioniert auch es werden sogar meine Icons korrekt eingelesen.
Aus dem Forum hier..

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:
ChangeFSRedirection(true);
ShellExecuteW(0, nil, PWideChar('C:\Windows\System32\SnippingTool.exe'), nil, nil, SW_SHOW);
ChangeFSRedirection(false);
gruss

Geändert von EWeiss (11. Jul 2019 um 15:49 Uhr)
  Mit Zitat antworten Zitat
Bornholdt
(Gast)

n/a Beiträge
 
#3

AW: Aufruf von Windows Snipping Tool und Remotehilfe

  Alt 31. Jan 2018, 08:31
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)
// https://stackoverflow.com/questions/...path-variables
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 !!
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:07 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