Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 11.07.2008, 11:52
Interface Interface вне форума
Активный
 
Регистрация: 23.05.2008
Адрес: Россия, Уфа
Сообщения: 203
Репутация: 1
Вопрос Рабочий стол...

Кто знает как сделать следующие: определить кол-во иконок на рабочем столе, определить их координаты, двигать 1 иконку, запомнить положение иконок и при нажатии "Button1" восстонавливать это положение, как скрыть 1 иконку, и программно "кликнуть" на иконке (то есть при нажатие Button1 открывался к примеру "Мой компьютер")?
Я понимаю что здесь намного больше 1 вопроса, но ведь все они относятся к 1 теме. И еще... в FAQ я смотрел и либо не понял, либо не то смтрел. Если сможите напишите please подробные пояснения к предоставленным там темам и исходникам .
Зарание спасибо
Ответить с цитированием
  #2  
Старый 11.07.2008, 17:23
Кодер Кодер вне форума
Активный
 
Регистрация: 25.02.2008
Сообщения: 395
Репутация: -599
По умолчанию

Могу подсказать что открытие папки "Мой компьютер" можно реализовать при помощи имитации нажатия клавишь Windows+E

А по поводу рабочего стола незнаю может эта статейка тебе чем поможет?(прикрипил файл)
Ответить с цитированием
  #3  
Старый 11.07.2008, 17:46
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,505
Версия Delphi: XE10
Репутация: выкл
Радость

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.
Взято с http://www.cracklab.ru/pro/delphi/WorkTable.php
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию
Ответить с цитированием
  #4  
Старый 29.01.2010, 22:23
Аватар для bv7
bv7 bv7 вне форума
Прохожий
 
Регистрация: 29.01.2010
Сообщения: 4
Репутация: 10
Восклицание Внимание, альтернативная оболочка WinXP

Стандартная оболочка Windows XP изменена, вместо неё запускается другое приложение (П1).

Так же необходимо чтобы по нажатию функциональной клавиши, например F2, происходило появление другого приложения (П2), П2 просто разворачивалось бы, при необходимости сворачивалось, для дальнейшего вызова использовалась бы та же функциональная клавиша.

Возможно ли это реализовать если П2 запустить как сервис и как?

Если такое не возможно, то какие будут предложения по решению этой проблемы?

Переход к стандартной оболочке Windows невозможен, прекращение работы П1 так же не возможно!
Ответить с цитированием
  #5  
Старый 29.01.2010, 22:37
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,723
Репутация: 52347
По умолчанию

Цитата:
Переход к стандартной оболочке Windows невозможен, прекращение работы П1 так же не возможно!
Ну 1 еще понятно, а вот как выключить комп, если ваше П1 не будет выключаться? Ресетом?
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #6  
Старый 30.01.2010, 11:16
Аватар для bv7
bv7 bv7 вне форума
Прохожий
 
Регистрация: 29.01.2010
Сообщения: 4
Репутация: 10
По умолчанию

Цитата:
Сообщение от Страдалецъ
Ну 1 еще понятно, а вот как выключить комп, если ваше П1 не будет выключаться? Ресетом?
А комп в этом случае вообще не выключается, потому как этот комп показывает информацию в реальном времени за которой непрерывно следят. Представьте себе любой технологический процесс который необходимо постоянно мониторить, в моем случае вс выглядит точно так же, только процесс не технологический, там крутятся изображения с камер видео наблюдения, изображение с камер можно переключать и тп, а вот комп выключить оператор не может, как собственно и запускать мультимедиа приложения, просматривать картинки, запускать игры.

Приложение П2, сотрудникам необходимо для работы, в связи с этим и появилась такая задача.

Ну а если уж возникнет необходимость комп выключить ... тогда только кнопки reset или power или физически от сети отключить, до такого за год эксплуатации ещё ни разу не прибегали.
__________________
Жизнь хороша, если правильно подобрать антидепрессанты.
Ответить с цитированием
  #7  
Старый 30.01.2010, 11:16
Аватар для bv7
bv7 bv7 вне форума
Прохожий
 
Регистрация: 29.01.2010
Сообщения: 4
Репутация: 10
По умолчанию

Цитата:
Сообщение от Страдалецъ
Ну 1 еще понятно, а вот как выключить комп, если ваше П1 не будет выключаться? Ресетом?
А комп в этом случае вообще не выключается, потому как этот комп показывает информацию в реальном времени за которой непрерывно следят. Представьте себе любой технологический процесс который необходимо постоянно мониторить, в моем случае вс выглядит точно так же, только процесс не технологический, там крутятся изображения с камер видео наблюдения, изображение с камер можно переключать и тп, а вот комп выключить оператор не может, как собственно и запускать мультимедиа приложения, просматривать картинки, запускать игры.

Приложение П2, сотрудникам необходимо для работы, в связи с этим и появилась такая задача.

Ну а если уж возникнет необходимость комп выключить ... тогда только кнопки reset или power или физически от сети отключить, до такого за год эксплуатации ещё ни разу не прибегали.
__________________
Жизнь хороша, если правильно подобрать антидепрессанты.
Ответить с цитированием
  #8  
Старый 31.01.2010, 13:10
Аватар для bv7
bv7 bv7 вне форума
Прохожий
 
Регистрация: 29.01.2010
Сообщения: 4
Репутация: 10
По умолчанию

Отвечаю сам себе ... и всем остальным кто столкнулся с похожей проблемой.
Выход из положения - написать функцию которая регистрировала бы горячую клавишу

Код:
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.Приложение установил как службу. Приложение запускается с скрытой от пользователя формой, как это сделать ... гугл вам в помощь.
__________________
Жизнь хороша, если правильно подобрать антидепрессанты.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 16:08.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025