![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как открыть окно
melifaro © (2002-12-20 08:40:00)Доброго времени суток.
Напаролся на проблемму. Уже не знаю где искать.
Ситуация такая - мне нужно открыть стандартное окно "Выполнить", причём тогда, когда эксплорер не работает (т.е. исклучается эмуляция сообщения таскбару для открытия этого окна).
Передебажил все dll"ины в виндах, пересмотрел кучу сайтов. Результата НЕТ. Помогите!
melifaro (2002-12-24 15:47:00) [1]2Vasily Terekhov Огромное спасибо :)
DVM (2002-12-23 21:07:00) [2]Можно свое сделать такое же за полчаса. Мне когда понадобилось, я сделал. Там только сложность с хранением в реестре ранее запускавшихся программ (MRU).
А по поводу использования окна "Run" Explorera:
запуск будет работать криво - нельзя так открыть будет папку, например, т.к. для этого нужен эксплорер.
Игорь Шевченко (2002-12-23 18:15:00) [3]Vasily Terekhov (23.12.02 17:50)
Систему бы еще указать, от версии к версии номер может меняться
Vasily Terekhov (2002-12-23 17:54:00) [4]Дополнение...
Type
SHRunDialogProc = function (wnd : HWND; Unknown1:integer; Unknown2 : Pointer; szTitle : PChar; szPrompt : PChar; uiFlages : integer) : DWORD; stdcall;
var
SHRunDialog : SHRunDialogProc;
Vasily Terekhov (2002-12-23 17:50:00) [5]procedure TForm1.Button1Click(Sender: TObject);
var
ShellHandle: THandle;
begin
ShellHandle := Windows.LoadLibrary("shell32.dll");
if ShellHandle <> 0 then
SHRunDialog := GetProcAddress(ShellHandle, PChar(61));
if Assigned(SHRunDialog) then
SHRunDialog(Application.Handle,0,nil,nil,nil,0);
end;
melifaro (2002-12-20 18:27:00) [6]Спасибо, глянем. Всё-равно версий не так много, а написать и под каждую можно. :)
Игорь Шевченко (2002-12-20 11:35:00) [7]melifaro © (20.12.02 11:19)
Shell32.dll или ShlwApi.dll надо смотреть, диалог оттуда вызывается. Но экспортируемая функция номерная и, боюсь, сильно зависит от версии Windows.
melifaro (2002-12-20 11:19:00) [8]2 Игорь Шевченко - как раз он-то и НЕ подходит. Нет эксплорера - нечего нажимать.
Игорь Шевченко (2002-12-20 10:00:00) [9]Один из способов:
//Show the Run-Dialog:
keybd_event(VK_LWIN, MapVirtualKey(VK_LWIN, 0), 0, 0);
keybd_event(Ord("R"), MapVirtualKey(Ord("R"), 0), 0, 0);
keybd_event(Ord("R"), MapVirtualKey(Ord("R"), 0), KEYEVENTF_KEYUP, 0);
keybd_event(VK_LWIN, MapVirtualKey(VK_LWIN, 0), KEYEVENTF_KEYUP, 0)
Автор - Thomas Shutz
melifaro (2002-12-20 09:15:00) [10]Нет. Я лично видел программы, в которых окно "Выполнить" вызывается при закрытом эксплорере.
Наверное stdcall"ом ис самого explorer"а... подозреваю...
Song (2002-12-20 09:11:00) [11]Дык эта феня наверно от эксплорера и идёт..