![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Горячая клавиша на создание папки в активном окне [D7, WinXP]
Andron.Ru © (2005-12-05 08:20:00)Как создать папу в активном окне Explorera при помощи комбинации клавиш... С хуками разумеется это не проблема, а вот как это сделать без них.. С учетом того что программа не имеет окна, но висит в процессе..
Заранее спасибо!!
Rouse_ (2005-12-05 11:01:00) [1]
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ActiveX, SHDocVw, ShellAPI;
type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
private
IDHOT: Cardinal;
procedure WMHotKey(var Message: TMessage); message WM_HOTKEY;
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
IDHOT := GlobalAddAtom('Alt+Space hotkey');
RegisterHotKey(Handle, IDHOT, MOD_WIN, 90);
end;
procedure TForm1.WMHotKey(var Message: TMessage);
var
ShellWindow: IShellWindows;
WB: IWebBrowserApp;
spDisp: IDispatch;
I: Integer;
FWindow: THandle;
NS: IShellFavoritesNameSpace;
begin
if Message.WParam = IDHOT then
begin
FWindow := GetForegroundWindow;
ShellWindow := CoShellWindows.Create;
for I := 0 to ShellWindow.Count - 1 do
begin
spDisp := ShellWindow.Item(I);
if spDisp = nil then Continue;
spDisp.QueryInterface(IWebBrowserApp, WB);
if WB <> nil then
if WB.HWND = FWindow then
// Тут создавай директорию. Путь к открытой папке лежит в WB.LocationURL
end;
end;
end;
end.
Rouse_ (2005-12-05 11:01:00) [2]ЗЫ: горячую клавишу в примере поставил не на ALT+Space а на WIN+Z :)