Пятница, 25.09.2026, 21:33
Вы вошли как Гость | Группа "Гости"Приветствую Вас Гость | RSS
Форма входа
Меню сайта
Главная » FAQ » Программирование Delphi [ Добавить вопрос ]

Программирование Delphi [91]
Вопрос-Ответ по программированию

Приведенный пример устанавливает драйвер принтера. Вам необходимо скопировать файлы с драйвером принтера в каталог Windows\System и внести необходимые изменения в файл Win.Ini.

Примечание:

 

DriverName = Имя драйвера;

DRVFILE - имя файла с драйвером без расширения

(".drv" - по умолчанию).

Пример :

 

procedure TForm1.Button1Click(Sender: TObject);

var

s : array[0..64] of char;

begin

WriteProfileString('PrinterPorts',

'DriverName',

'DRVFILE,FILE:,15,45');

WriteProfileString('Devices',

'DriverName',

'DRVFILE,FILE:');

StrCopy(S, 'PrinterPorts');

SendMessage(HWND_BROADCAST, WM_WININICHANGE, 0, LongInt(@S));

StrCopy(S, 'Devices');

SendMessage(HWND_BROADCAST, WM_WININICHANGE, 0, LongInt(@S));

end;

Добавил: casperof (casperof)

Ответ:
Программно можно отключить монитор совместимый со стандартом EnergyStar.

Отправьте сообщение wm_SysCommand с параметром WParam = SC_MonitorPower

 
   и LParam = 0 для отключения монитора 
     LParam = 1 для включения монитора
 


В приведенном примере монитор отключается на 10 секунд.

Пример:

 
             type 
               TForm1 = class(TForm) 
                 Button1: TButton; 
                 Timer1: TTimer; 
                 procedure FormCreate(Sender: TObject); 
                 procedure Timer1Timer(Sender: TObject); 
                 procedure Button1Click(Sender: TObject); 
               private 
                 { Private declarations } 
               public 
                 MonitorOff : bool; 
                 { Public declarations } 
               end; 
 
             var 
               Form1: TForm1; 
 
             implementation 
 
             {$R *.DFM} 
 
             procedure TForm1.FormCreate(Sender: TObject); 
             begin 
               Timer1.Enabled := false; 
               Timer1.Interval := 10000; 
               MonitorOff := false; 
             end; 
 
             procedure TForm1.Timer1Timer(Sender: TObject); 
             begin 
               if MonitorOff then begin 
                 MonitorOff := false; 
                 SendMessage(Application.Handle, 
                             wm_SysCommand, 
                             SC_MonitorPower, 
                             -1); 
                 Timer1.Enabled := false; 
               end; 
             end; 
 
             procedure TForm1.Button1Click(Sender: TObject); 
             begin 
               MonitorOff := true; 
               Timer1.Enabled := true; 
               SendMessage(Application.Handle, 
                           wm_SysCommand, 
                           SC_MonitorPower, 
                           0); 
             end; 

Ответ :
Можно воспользоваться функцией API FlashWindow():

Пример :

 
 
             var 
               Flash : bool; 
 
             procedure TForm1.Timer1Timer(Sender: TObject); 
             begin 
               FlashWindow(Form1.Handle, Flash); 
               FlashWindow(Application.Handle, Flash); 
               Flash := not Flash; 
             end; 
 
             procedure TForm1.FormCreate(Sender: TObject); 
             begin 
              Flash := False; 
             end; 

Ответ :
На событии Resize вызовите Windows API функцию InvalidateRect(). Если передать nil в качестве второго параметра приведет к тому, что перерисовываться будет вся клиентская область окна. Третий параметр указывает будет ли перерисовываться фон формы.
Пример :

 
            procedure TForm1.FormResize(Sender: TObject); 
             begin 
               InvalidateRect(Form1.Handle, nil, false); 
             end;

Приведенный пример демонстрирует использование API функции mouse_event() для имитации событий мыши. При нажатии кнопки Button2 программа перемещает курсор мыши на кнопку Button1 и щелкает по ней. Положение курсора мыши задается в "абсолютных" координатах ("Mickeys"), где 65535 "Mickeys" равно ширине экрана.

 
            procedure TForm1.Button1Click(Sender: TObject); 
             begin 
               ShowMessage('Button 1 clicked'); 
             end; 
 
             procedure TForm1.Button2Click(Sender: TObject); 
             var 
               Pt : TPoint; 
             begin 
              {Позволим кнопке Button2 перерисоваться} 
               Application.ProcessMessages; 
              {Найдем координаты центра button 1} 
               Pt.x := Button1.Left + (Button1.Width div 2); 
               Pt.y := Button1.Top + (Button1.Height div 2); 
              {Преобразуем Pt к координатам экрана} 
               Pt := ClientToScreen(Pt); 
              {Преобразуем Pt к "mickeys" (аболютным координатам курсора мышки} 
               Pt.x := Round(Pt.x * (65535 / Screen.Width)); 
               Pt.y := Round(Pt.y * (65535 / Screen.Height)); 
              {Переместим курсор мыши} 
               Mouse_Event(MOUSEEVENTF_ABSOLUTE or 
                           MOUSEEVENTF_MOVE, 
                           Pt.x, 
                           Pt.y, 
                           0, 
                           0); 
              {Имитируем нажатие левой кнопки мыши} 
               Mouse_Event(MOUSEEVENTF_ABSOLUTE or 
                           MOUSEEVENTF_LEFTDOWN, 
                           Pt.x, 
                           Pt.y, 
                           0, 
                           0);; 
              {Имитируем отпускание левой кнопки мыши} 
               Mouse_Event(MOUSEEVENTF_ABSOLUTE or 
                           MOUSEEVENTF_LEFTUP, 
                           Pt.x, 
                           Pt.y, 
                           0, 
                           0);; 
             end;

Наш опрос
С какого поисковика вам стал известен сайт?
Всего ответов: 28
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Поиск