procedure wmSysCommand(var Message:TMessage); message WM_SYSCOMMAND;

end;

const

 ID_ABOUT = WM_USER+1;

 ID_CALENDAR=WM_USER+2;

 ID_EDIT = WM_USER+3;

 ID_ANALIS = WM_USER+4;

implementation

procedure TMyForm.wmSysCommand;

begin

 case Message.wParam of

 ID_CALENDAR:DatBitBtnClick(Self) ;

 ID_EDIT :EditBitBtnClick(Self);

 ID_ANALIS:AnalisButtonClick(Self);

 end;

 inherited;

end;

procedure TMyForm.FormCreate(Sender: TObject);

var SysMenu:THandle;

begin

 SysMenu:=GetSystemMenu(Handle,False);

 InsertMenu(SysMenu,Word(-1),MF_SEPARATOR,ID_ABOUT,'');

 InsertMenu(SysMenu,Word(-1),MF_BYPOSITION,ID_Calendar, 'Calendar');

 InsertMenu(SysMenu,Word(-1),MF_BYPOSITION,ID_Analis, 'Analis');

 InsertMenu(SysMenu,Word(-1),MF_BYPOSITION,ID_Edit, 'Edit');

end;

Запуск внешней программы и ожидание ее завершения 

procedure TForm1.Button1Click(Sender: TObject);

var

 si : Tstartupinfo;

 p : Tprocessinformation;

begin

 FillChar( Si, SizeOf( Si ) , 0 );

 with Si do begin

  cb := SizeOf( Si);

  dwFlags := startf_UseShowWindow;

  wShowWindow := 4;

 end;

 Application.Minimize;

 Createprocess(nil,'notepad.exe',nil,nil,false,

 Create_default_error_mode,nil,nil,si,p);

 Waitforsingleobject(p.hProcess,infinite);

 Application.Restore;

end;

Как узнать местоположение специальных папок у Windows? 

var

 FolderPath :string;

 Registry := TRegistry.Create;

try

 Registry.RootKey := HKey_Current_User;

 Registry.OpenKey('Software\Microsoft\Windows\'+

  'CurrentVersion\Explorer\Shell Folders', False);

 FolderName := Registry.ReadString('StartUp');

 {Cache, Cookies, Desktop, Favorites,

 Fonts, Personal, Programs, SendTo, Start Menu, Startp}

finally

 Registry.Free;

end;

Как засунуть в исполняемый файл wav-файл, и затем проиграть этот звук?

В файл MyWave.rc пишешь:

MyWave RCDATA LOADONCALL MyWave.wav

Затем компилируешь

brcc32.exe MyWave.rc

получаешь MyWave.res.

В своей программе пишешь:

{$R MyWave.res}

procedure RetrieveMyWave;

var

 hResource: THandle;

 pData: Pointer;

begin

 hResource:=LoadResource( hInstance, FindResource(hInstance, 'MyWave', RT_RCDATA));

 try

  pData := LockResource(hResource);

  if pData = nil then raise Exception.Create('Cannot read MyWave');

  // Здесь pData указывает на MyWave

  // Теперь можно, например, проиграть его (Win32):

  PlaySound('MyWave', 0, SND_MEMORY);

 finally

  FreeResource(hResource);

 end;

end;

Как скрыть таскбар?  

procedure TForm1.Button1Click(Sender: TObject);

var

 hTaskBar : THandle;

begin

 hTaskbar := FindWindow('Shell_TrayWnd', Nil);

 ShowWindow(hTaskBar, SW_HIDE);

end;

procedure TForm1.Button2Click(Sender: TObject);

var

 hTaskBar : THandle;

begin

 hTaskbar := FindWindow('Shell_TrayWnd', Nil);

 ShowWindow(hTaskBar, SW_SHOWNORMAL);

end;

События нажатия на системные кнопки формы (минимизация, закрытие...)

Хотелось бы чтобы при нажатии на кнопку minimize программа исчезала из таскбара.

При нажатии на эти кнопки происходит сообщение WM_SYSCOMMAND, его то и надо перехватить.

При этом:

Перейти на страницу:

Похожие книги