Zoek es in de Help, staat dit allemaal beschreven.
"The shell stopped unexpectedly and Explorer.exe was restarted."
Daar heb ik uiteraard in gezocht. Maar niet gevonden.
SendMessage is beter in dit geval, daarmee geef je aan dat het direct moet uitgevoerd worden.Op Sunday 09 December 2001 19:56 schreef TheEmperor het volgende:
postmessage procedure
https://fgheysels.github.io/
Via het voorbeeld op de Winamp site moest je het toch wel kunnen vinden.Op Sunday 09 December 2001 20:15 schreef michiel100 het volgende:
Daar heb ik uiteraard in gezocht. Maar niet gevonden.
"The shell stopped unexpectedly and Explorer.exe was restarted."
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:
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
Ik heb zelf ooit een programmaatje gemaakt om mijn buurman te irriteren
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.
Pagina: 1