![]() |
|
#1
|
|||
|
|||
![]() Кто знает как сделать следующие: определить кол-во иконок на рабочем столе, определить их координаты, двигать 1 иконку, запомнить положение иконок и при нажатии "Button1" восстонавливать это положение, как скрыть 1 иконку, и программно "кликнуть" на иконке (то есть при нажатие Button1 открывался к примеру "Мой компьютер")?
![]() Я понимаю что здесь намного больше 1 вопроса, но ведь все они относятся к 1 теме. ![]() ![]() ![]() Зарание спасибо |
#2
|
|||
|
|||
![]() Могу подсказать что открытие папки "Мой компьютер" можно реализовать при помощи имитации нажатия клавишь Windows+E
А по поводу рабочего стола незнаю может эта статейка тебе чем поможет?(прикрипил файл) |
#3
|
||||
|
||||
![]() Just for fun, показывает работу с Desctop
Код:
program WorkTable; uses Windows; const LVM_GETITEMCOUNT=$1000+4; // ряд сообщений, которые я не нашел, что бы они LVM_SETITEMPOSITION=$1000+15; // были гдето описаны в Delphi(по-крайней мере у меня) var i, n : integer; SX,SY : integer; x,y : integer; IconCount : integer; hwndLV : HWND; begin // получаем HWND рабочего стола, т.к. desktop является "внуком" окна ProgMan hwndLV := GetTopWindow(GetTopWindow(FindWindow(PChar('ProgMan'),nil))); // получаем размер экрана и количество иконок на нашем рабочем столе SX := GetSystemMetrics(SM_CXSCREEN); SY := GetSystemMetrics(SM_CYSCREEN); IconCount := SendMessage(hwndLV,LVM_GETITEMCOUNT,0,0); // а теперь большой цикл, где вложенный цикл изменяет положение отдельной иконки for n:=30000 downto 0 do for i:=IconCount downto 0 do begin x := random(SX); y := random(SY); SendMessage(hwndLV, LVM_SETITEMPOSITION, i,MAKELPARAM( x,y)); sleep(100); // перенеся данный вызов в основной цикл можем добиться //изменения положениЯ всех иконок на рабочем столе end; // кстати ве это чудо длиться (30 000*100)/1000=3000 секунд=50 минут end. — Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию |
#4
|
||||
|
||||
![]() Стандартная оболочка Windows XP изменена, вместо неё запускается другое приложение (П1).
Так же необходимо чтобы по нажатию функциональной клавиши, например F2, происходило появление другого приложения (П2), П2 просто разворачивалось бы, при необходимости сворачивалось, для дальнейшего вызова использовалась бы та же функциональная клавиша. Возможно ли это реализовать если П2 запустить как сервис и как? Если такое не возможно, то какие будут предложения по решению этой проблемы? Переход к стандартной оболочке Windows невозможен, прекращение работы П1 так же не возможно! |
#5
|
||||
|
||||
![]() Цитата:
Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#6
|
||||
|
||||
![]() Цитата:
Приложение П2, сотрудникам необходимо для работы, в связи с этим и появилась такая задача. Ну а если уж возникнет необходимость комп выключить ... тогда только кнопки reset или power или физически от сети отключить, до такого за год эксплуатации ещё ни разу не прибегали. Жизнь хороша, если правильно подобрать антидепрессанты. |
#7
|
||||
|
||||
![]() Цитата:
Приложение П2, сотрудникам необходимо для работы, в связи с этим и появилась такая задача. Ну а если уж возникнет необходимость комп выключить ... тогда только кнопки reset или power или физически от сети отключить, до такого за год эксплуатации ещё ни разу не прибегали. Жизнь хороша, если правильно подобрать антидепрессанты. |
#8
|
||||
|
||||
![]() ![]() Выход из положения - написать функцию которая регистрировала бы горячую клавишу Код:
const id_F6 = 101; procedure TForm1.WMHotKey (var Msg : TWMHotKey); begin if Msg.HotKey = id_F6 then Begin if Form1.Visible = False Then Form1.Show Else Form1.Hide; end; end; А вот собственно и применение: Код:
procedure TForm1.FormCreate(Sender: TObject); begin Application.Showmainform:=false; RegisterHotKey(Form1.Handle, id_F6, 0, VK_F6); end; procedure TForm1.FormDestroy(Sender: TObject); begin UnRegisterHotKey (Form1.Handle, id_F6); end; Код:
procedure TForm1.FormShow(Sender: TObject); begin SetWindowLong(Handle, GWL_HWNDPARENT, GetDesktopWindow); // Устанавливаем родителем Desctop SetWindowPos(Handle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOSIZE or SWP_NOMOVE); // Перемещаем наверх end; P.S.Приложение установил как службу. Приложение запускается с скрытой от пользователя формой, как это сделать ... гугл вам в помощь. Жизнь хороша, если правильно подобрать антидепрессанты. |