![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как открыть проводник диска А из своей программы в модальном окне [D5, Win95/98]
иван61 © (2002-09-08 21:35:00)Просмотр содержимого диска А делаю так:
ShellExecute(Form9.Handle,PChar("open"), PChar("A:\"), nil,nil,SW_ShowNormal);
Как сделать чтобы окно проводника открывалось в модальном режиме?
Чтобы при клике мимо него оно не перекрывалось другими окнами?
Заранее спасибо.
Steven (2002-09-10 05:33:00) [1]попробуй d6 и ShellListView.
Игорь Шевченко (2002-09-09 15:22:00) [2]Ученик © (09.09.02 13:50)
В WinNT работает не так, как задумано :-(
Ученик (2002-09-09 13:50:00) [3]>Игорь Шевченко © (09.09.02 13:34)
Все работает как задумано
Игорь Шевченко (2002-09-09 13:34:00) [4]Ученик © (09.09.02 13:25)
А проверить не мешает - получите массу положительных эмоций :-)
Ученик (2002-09-09 13:25:00) [5]>Игорь Шевченко © (09.09.02 13:09)
"Другие окна" не определены :-)
Alx2 (2002-09-09 13:15:00) [6]Вообще-то сделать модальным чужое окно ИМХО х/з.
Но что-то кривое наподобие получилось, правда с названием класса "CabinetWClass" - подходить придется довольно индивидуально.
var
Inst: THandle;
wnd: hwnd;
count: integer;
begin
Inst := ShellExecute(Handle, "open", "A:\", nil, nil, SW_ShowNormal);
if Inst > 32 then
begin
count := 1;
repeat
sleep(10); // даем время раскочегариться (до ~10с)
wnd := FindWindow("CabinetWClass", "A:\"); //
Ищем форточку с классом CabinetWClass и заголовком A:\. Вот здесь нужно уточнить или найти способ определения этого класса у explorera.
inc(count);
until (wnd <> 0) or (count > 1000);
if wnd = 0 then ShowMessage(SysErrorMessage(GetLastError))
else
begin
SetWindowPos(wnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE or SWP_NOSIZE); // Вытаскиваем экплорнутое окошко наверх и приколачиваем его к этому верху.
Enabled := false; // Приглушаем наше окошко
while IsWindow(wnd) do // Ученик (c)
begin
Sleep(10);
Application.ProcessMessages;
end;
Enabled := true; // Возвращаемся к полноценной жизни
end;
end;
end;
Игорь Шевченко (2002-09-09 13:09:00) [7]Ученик © (09.09.02 11:27)
А попробовать ? :-)))
Вы делаете недоступным окно своего приложения, но все остальные приложения прекрасно перекрывают окно проводника :-)
С уважением,
Ученик (2002-09-09 11:27:00) [8]procedure TForm1.Button3Click(Sender: TObject);
var
ShellWindow : HWnd;
begin
ShellExecute(Handle, "open", "A:\", nil, nil, SW_ShowNormal);
ShellWindow := GetForegroundWindow;
Enabled := False;
while IsWindow(ShellWindow) do Application.ProcessMessages;
Enabled := True;
end;
Inan61 (2002-09-09 10:09:00) [9]Уделите внимание моей проблеме.
Очень нужно!!!
Заранее спасибо