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: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88: 89: 90: 91: 92: 93: 94: 95:
| const WA_BUTTON1 : integer = 40044; WA_BUTTON2 : integer = 40045; WA_BUTTON3 : integer = 40046; WA_BUTTON4 : integer = 40047; WA_BUTTON5 : integer = 40048; WA_VOLUMEUP : integer = 40058; WA_VOLUMEDOWN: integer = 40059; WA_SHUFFLE : integer = 40023; WA_REPEAT : integer = 40022; WA_JMPTIME : integer = 40193; WA_JMPFILE : integer = 40194; WA_SKINSELEC : integer = 40219; WA_CONFVISUAL: integer = 40221; WA_RELOADSKIN: integer = 40291; WA_CLOSE : integer = 40001; WA_TENTRKBACK: integer = 40197; WA_EDBOOKMRK : integer = 40320; WA_BOOKMRKTRK: integer = 40321; WA_AUDIOCD : integer = 40323; WA_LOADEQ : integer = 40253; WA_SAVEEQ : integer = 40254; WA_LOADPRESETS : integer = 40172; WA_AUTOLDPRSTS : integer = 40173; WA_LOADDEFPRST : integer = 40174; WA_SAVEPRESET : integer = 40175; WA_AUTOLDSAVE : integer = 40176; WA_DELPRESET : integer = 40178; WA_DELAUTOLD : integer = 40180;
IPC_GETLISTLENGTH : integer = 124; IPC_GETLISTPOS :integer = 125; IPC_GETPLAYLISTFILE : integer = 211; IPC_GETPLAYLISTTITLE : integer = 212;
IPC_GET_SHUFFLE : integer = 250; IPC_GET_REPEAT : integer = 251;
var Form1: TForm1;
implementation
{$R *.dfm}
function GetWinampTitel(data:Integer): String; var hwndWinamp, TempHandle : THandle; dat2: array[0..500] of Char; TrackPos: Integer; temp, MPointer: Cardinal; begin hwndWinamp:= FindWindow('Winamp v1.x',nil); if hwndWinamp= 0 then begin result:='' end else begin if data<0 then TrackPos:= SendMessage(hwndWinamp,WM_USER,0 , IPC_GETLISTPOS ) else TrackPos:=data;
MPointer:= SendMessage(hwndWinamp,WM_USER,TrackPos , IPC_GETPLAYLISTTITLE); GetWindowThreadProcessId(hwndWinamp,TempHandle); hwndWinamp:= OpenProcess(PROCESS_ALL_ACCESS,False,TempHandle); ReadProcessMemory(hwndWinamp, Pointer(MPointer), @dat2,500,temp); CloseHandle(hwndWinamp); Result:= string(dat2); end; end;
procedure TForm1.Button1Click(Sender: TObject); begin label1.Caption := GetWinampTitel(-1); end;
procedure TForm1.Button2Click(Sender: TObject); var hWinAmp: THandle; begin hWinAmp := FindWindow('Winamp v1.x',nil); SendMessage(hWinAmp,wm_command,WA_BUTTON2,0); end; |