Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Горячая клавиша на создание папки в активном окне [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 :)


Наверх

Титульная страница Поиск, карта сайта Написать письмо