![]() |
Shellextension - OnFileClick
Hi,
Mir ist kein besserer Name eingefallen. Aber gibt es eine Möglichkeit darauf zu reagieren das auf eine Datei im Explorer geklickt wurde? Gruß Neutral General |
Re: Shellextension - OnFileClick
|
Re: Shellextension - OnFileClick
Da wirst du um eine shellextension nicht drum rumkommen. Guck dir mal meinen ExifReader an, da ist eine Shellextention dabei
![]() |
Re: Shellextension - OnFileClick
Hi,
Habe schon ne Shellextension geschrieben, aber ich weiß nicht welches Interface ich in diesem Fall benutzen muss. Weil ich ja kein Kontextmenu brauche. Gruß Neutral General |
Re: Shellextension - OnFileClick
Bist du ganz sicher, dass du weißt was eine Shell Extension ist?
Welchen Typ von Shell Extension hast du implementiert? Keiner der mir bekannten Typen scheint mir für deine Zwecke geeignet zu sein - aber ich kann mich irren. |
Re: Shellextension - OnFileClick
Hi,
Damals war es: IShellExtInit und IContextMenu:
Delphi-Quellcode:
Bei deiner Möglichkeit müsste ich das ganze mit nem Hook lösen oder?
TEncryptContextMenu = class(TComObject, IShellExtInit, IContextMenu)
Mein Code ist bisher folgender:
Delphi-Quellcode:
Aber ich bekomme irgendwie gar keine Message abgefangen. Aber ClickHook wird schon aufgerufen, das habe ich beim Debuggen festgestellt.
library Hookdll;
uses Windows, Messages, CommCtrl, Dialogs; var HookHandle: THandle; function ClickHook(nCode: Integer; wParam: WPARAM; lParam: LPARAM): LRESULT; stdcall; begin if nCode = HC_ACTION then case PMsg(lParam)^.message of NM_CLICK: ShowMessage('NM_CLICK!'); // wobei es so nicht geht weil NM_CLICK < 0 und // PMsg(lParam)^.message: Cardinal deswegen hatte ichs mal so: // case Integer(PMsg(lparam)^.Message) of // NM_CLICK: ... end else Result := CallNextHookEx(HookHandle, nCode, wParam, lParam); end; function InstallHook: Boolean; stdcall; begin Result := false; if HookHandle = 0 then begin HookHandle := SetWindowsHookEx(WH_GETMESSAGE,@ClickHook, hInstance,0); Result := true; end; end; function UnInstallHook: Boolean; begin Result := UnhookWindowsHookEx(HookHandle); HookHandle := 0; end; exports InstallHook, UnInstallHook; begin end. Gruß Neutral General |
Re: Shellextension - OnFileClick
Im von Marabu verlinkten Text heißt es, dass NM_CLICK über WM_NOTIFY empfangen wird.
|
Re: Shellextension - OnFileClick
Hi,
Ja das habe ich mittlerweile jetzt auch herausgefunden aber es kommt mir vor als würde absolut niemand WM_NOTIFY Nachrichten versenden (WinVista).
Delphi-Quellcode:
:wiejetzt:
function ClickHook(nCode: Integer; wParam: WPARAM; lParam: LPARAM): LRESULT; stdcall;
var Info: PNMHdr; begin case PMsg(lParam)^.message of WM_NOTIFY: begin Info := PNMHdr(PMsg(lParam)^.lParam); if Info.code = NM_CLICK then ShowMessage('NM_CLICK!'); end; end; Result := CallNextHookEx(HookHandle, nCode, wParam, lParam); end; Ach ja: Ich habe das Interface ICopyHookA/W gefunden, mit dem man das Umbenennen/Kopieren/Löschen verhindern kann, was erst mal gut klingt. Dummerweise funktioniert das nur bei Druckern und Ordnern und nicht bei normalen Dateien... Also wäre auch dankbar wenn jemand auf diesem Wege noch weiterwüsste. Gruß Neutral General |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:44 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