[Delphi] Windows message versturen

Pagina: 1
Acties:

  • michiel100
  • Registratie: November 2000
  • Laatst online: 16-09 15:02
Ik wil vanuit een programma Winamp aansturen (bijvoorbeeld mp3'tje starten).

Zoals hier staat beschreven kun je daarvoor windows messages gebruiken.

Ik kon wel vinden hoe het in vb moet, maar in delphi lukt het me maar niet.

Wie weet hoe?

Verwijderd

postmessage procedure

  • jelmervos
  • Registratie: Oktober 2000
  • Niet online

jelmervos

Simple user

Zoek es in de Help, staat dit allemaal beschreven.

"The shell stopped unexpectedly and Explorer.exe was restarted."


  • michiel100
  • Registratie: November 2000
  • Laatst online: 16-09 15:02
Daar heb ik uiteraard in gezocht. Maar niet gevonden.

  • whoami
  • Registratie: December 2000
  • Laatst online: 00:01
Op Sunday 09 December 2001 19:56 schreef TheEmperor het volgende:
postmessage procedure
SendMessage is beter in dit geval, daarmee geef je aan dat het direct moet uitgevoerd worden.

https://fgheysels.github.io/


  • jelmervos
  • Registratie: Oktober 2000
  • Niet online

jelmervos

Simple user

Op Sunday 09 December 2001 20:15 schreef michiel100 het volgende:
Daar heb ik uiteraard in gezocht. Maar niet gevonden.
Via het voorbeeld op de Winamp site moest je het toch wel kunnen vinden.

"The shell stopped unexpectedly and Explorer.exe was restarted."


  • Tomatoman
  • Registratie: November 2000
  • Laatst online: 22:24

Tomatoman

Fulltime prutser

Een nogal slordig geprogrammeerde unit - die overigens best behoorlijk werkt :) - is EasyAmp. Ga naar www.stnd.de, volg de link Programming en Delphi Tutorials of download de code direct via http://www.stnd.de/programming/tutorials/tutorials/easyamp.html.

Ik heb zelf ooit een programmaatje gemaakt om mijn buurman te irriteren ;). Ik kon op afstand zijn computer en dus ook WinAmp besturen door commando's naar hem te streamen. Om een indruk te geven hoe de code werkt:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
function OpWinAmpCommand(CS: TComponentStream): string;
var
  n, Pos: Integer;
begin
  with CS as TWinAmpCommand do
  case Command of
    wcRunWinAmp:    if not AmpIsRunning then AmpCL_NewInstance;
    wcCloseWinAmp:    SendMessage(GetAmpMainHandle, WM_DESTROY, 0,0);
    wcPlay:      SendMessage(GetAmpMainHandle, WM_COMMAND, Amp_Command_BUTTON2, 0);
    wcPause:        SendMessage(GetAmpMainHandle, WM_COMMAND, Amp_Command_BUTTON3, 0);
    wcStop:      SendMessage(GetAmpMainHandle, WM_COMMAND, Amp_Command_BUTTON4, 0);
    wcPrevious:  SendMessage(GetAmpMainHandle, WM_COMMAND, Amp_Command_BUTTON1, 0);
    wcNext:      SendMessage(GetAmpMainHandle, WM_COMMAND, Amp_Command_BUTTON5, 0);
    wcForward:    SendMessage(GetAmpMainHandle, WM_COMMAND, Amp_Command_FFWD5S, 0);
    wcBack:      SendMessage(GetAmpMainHandle, WM_COMMAND, Amp_Command_REW5S, 0);
    wcDeletePlayList: SendMessage(GetAmpMainHandle, WM_USER, 0, 101);
    wcVolumeUp:  SendMessage(GetAmpMainHandle, WM_COMMAND, Amp_Command_VOLUMEUP, 0);
    wcVolumeDown:     SendMessage(GetAmpMainHandle, WM_COMMAND, Amp_Command_VOLUMEDOWN, 0);
    wcVolumeData:     SendMessage(GetAmpMainHandle, WM_USER, Byte(Data), 122);
    wcMute:      SendMessage(GetAmpMainHandle, WM_USER, 0, 122);
    wcPlayFile:  if FileName <> '' then AmpCL_PlayFile(FileName);
    wcAddToPlayList:  if FileName <> '' then AmpCL_AddFile(FileName);
    wcStick:        for n := 1 to 30 do
                begin
                Pos := SendMessage(GetAmpMainHandle, WM_USER, 0, 105);
                SendMessage(GetAmpMainHandle, WM_USER, Pos + Random(1000) -500, 106);
                Sleep(500);
                end;
    wcStickData:    for n := 1 to Byte(Data) do
                begin
                Pos := SendMessage(GetAmpMainHandle, WM_USER, 0, 105);
                SendMessage(GetAmpMainHandle, WM_USER, Pos + Random(1000) -500, 106);
                Sleep(500);
                end;
  end;
  Result := SWinAmpCommandExecuted;
end;

De TWinAmpCommand record (met recordvelden Command, Filename en Data) en de wc* constanten zijn specifiek voor mijn programma, maar je begrijpt de essentie vast wel. Vooral de code bij wcStick werkt erg op je zenuwen, het lijkt of WinAmp hapert wegens 100% processorbelasting >:)

Een goede grap mag vrienden kosten.


  • michiel100
  • Registratie: November 2000
  • Laatst online: 16-09 15:02
Dank!
Pagina: 1