Avatar billede unkill Nybegynder
23. marts 2003 - 21:43 Der er 7 kommentarer

dll som bliver påvirkert af trigger i irc

Hej.

Jeg kunne godt tænke mig en dll fil, som skal kunne følgende:
At når jeg trigger !request <navn> på irc så søger den efter <navn> (som kan være hvilken som helst sang som ligger i mit winamp 2.81) på sangen som står efter !request
og hvis den ikke finder sangen (<navn>) melder den tilbage at den ikke har sangen.
Hvis den så finder noget som den tror er den rigtige sang, starter den med at spørge tilbage om det er den rigtige sang som dllen har fundet, hvis man skriver !nej så spiller den den ikke, hvis !ja spiller den sangen, efter den sang som allerede bliver spillet i winamp 2.81.

Håber du kan hjælpe :]
Avatar billede angelod Novice
23. marts 2003 - 21:49 #1
Øøøhm.. Snakker du om en plugin til mIRC eller hvad? :)
Avatar billede dj Nybegynder
23. marts 2003 - 22:06 #2
Det er forholdsvis simpelt at lave, men hvorfor går du ikke igang med det og stiller nogle konkrete spørgsmål undervejs ?

Vi er her for at hjælpe dig hvis du render ind i problemer .. meningen er jo ikke at vi skal lave det hele for dig :)

Vi har jo selv projekter vi arbejder på, tror ikke du får mange til at lave en hel opgave for dig, heller ikke for 200 virtuelle point, og omvendt skulle det også gerne være dig og ikke os der lærte noget, ellers forsvinder pointen ligesom i denne gratis ydelse.
Avatar billede unkill Nybegynder
23. marts 2003 - 22:15 #3
:] Er lidt svært uden delphi :/
Avatar billede unkill Nybegynder
23. marts 2003 - 22:15 #4
angelod ja
Avatar billede angelod Novice
23. marts 2003 - 22:19 #5
Altså.. Du kan hente Delphi Personal Edition, og dermed starte.. Et plugin til mIRC er måske ikke det bedste sted at starte, alt efter hvor meget du ved om programmering.

Personligt har jeg lavet mange DLLer, men ikke til mIRC. Er nemlig ikke helt sikker på hvordan og hvorledes, og har lidt for mange betalende opgaver til at sætte mig ind i det..

Men som dj skrev, så er det meningen at du selv skal forsøge, og still konkrete spørgsmål. :o)
Avatar billede dj Nybegynder
24. marts 2003 - 07:53 #6
ok, skaf personal edition som angelod siger og så kan jeg vise dig lidt omkring hvor du kan begynde. Først og fremmest skal du lære hvordan du kommunikerer med mIRC fra en DLL fil. Her er en simpel DLL med standardfunktionerne og nogle funktioner der viser hvordan man kan læse og skrive til registreringsdatabasen (som kan benyttes igennem mIRC).

----------------------------------
library mIRC_dll;

{ Important note about DLL memory management: ShareMem must be the
  first unit in your library's USES clause AND your project's (select
  Project-View Source) USES clause if your DLL exports any procedures or
  functions that pass strings as parameters or function results. This
  applies to all strings passed to and from your DLL--even those that
  are nested in records and classes. ShareMem is the interface unit to
  the BORLNDMM.DLL shared memory manager, which must be deployed along
  with your DLL. To avoid using BORLNDMM.DLL, pass string information
  using PChar or ShortString parameters. }

uses
  SysUtils,
  classes,
  windows,
  dialogs,
  registry;

var
  param: Tstringlist;

procedure Tokenize(text: string; token: char);
var
  temp1,temp2: string;
begin
  try
    param.free;
  except
  end;
  param:=Tstringlist.create;
  temp1:=text;
  while (Length(temp1) > 0) and (pos(token,temp1)>0) do begin
      temp2:=temp1;
      temp1 := Copy(temp1, 0, pos(token,temp1)-1);
      param.Add(temp1);
      temp1 := copy(temp2,pos(token,temp2)+1,length(temp2));
  end;
  param.Add(temp1);
end;

function ETA( mWnd:
      hWnd; aWnd: hWnd; Data: PChar; Parms: PChar; Show: Boolean; NoPause:
      Boolean ): Integer;export;stdcall;
begin
  strcopy(data, 'The search for E.T. will never end!');
  result:=3;
end;

function RegRead( mWnd:
      hWnd; aWnd: hWnd; Data: PChar; Parms: PChar; Show: Boolean; NoPause:
      Boolean ): Integer;export;stdcall;
var
  mam: pchar;
  reg: Tregistry;
  key: Hkey;
begin
  try
    tokenize(data,'|');
    reg:=Tregistry.create;
    if param[0]='HKEY_LOCAL_MACHINE' then
      Key:=HKEY_LOCAL_MACHINE;
    if param[0]='HKEY_CLASSES_ROOT' then
      Key:=HKEY_CLASSES_ROOT;
    if param[0]='HKEY_CURRENT_USER' then
      Key:=HKEY_CURRENT_USER;
    if param[0]='HKEY_USERS' then
      Key:=HKEY_USERS;
    if param[0]='HKEY_CURRENT_CONFIG' then
      Key:=HKEY_CURRENT_CONFIG;
    if param[0]='HKEY_DYN_DATA' then
      Key:=HKEY_DYN_DATA;
    if (param[0] <> 'HKEY_CLASSES_ROOT') and (param[0] <> 'HKEY_LOCAL_MACHINE') and
    (param[0] <> 'HKEY_CURRENT_USER') and (param[0] <> 'HKEY_USERS') and
    (param[0] <> 'HKEY_CURRENT_Config') and (param[0] <> 'HKEY_DYN_DATA') then begin
      Raise Tregistry.create;
    end;
    reg.RootKey:=key;
    reg.OpenKey(param[1],true);
    strcopy(data,pchar(reg.ReadString(param[2])));
    reg.free;
    result:=3;
  except
    strcopy(data,'/echo SGUFT_DLL >> 4Failed to read from the registrydatabase! Syntax: $dll(sguft.dll,RegRead, HKEY_LOCAL_MACHINE|software\SGUFT Software\Contact|rname)');
    strcopy(parms, '-s');
    result:=2;
  end;
end;

function RegWrite( mWnd:
      hWnd; aWnd: hWnd; Data: PChar; Parms: PChar; Show: Boolean; NoPause:
      Boolean ): Integer;export;stdcall;
var
  mam: pchar;
  reg: Tregistry;
  key: Hkey;
begin
  try
    tokenize(data,'|');
    reg:=Tregistry.create;
    if param[0]='HKEY_LOCAL_MACHINE' then
      Key:=HKEY_LOCAL_MACHINE;
    if param[0]='HKEY_CLASSES_ROOT' then
      Key:=HKEY_CLASSES_ROOT;
    if param[0]='HKEY_CURRENT_USER' then
      Key:=HKEY_CURRENT_USER;
    if param[0]='HKEY_USERS' then
      Key:=HKEY_USERS;
    if param[0]='HKEY_CURRENT_CONFIG' then
      Key:=HKEY_CURRENT_CONFIG;
    if param[0]='HKEY_DYN_DATA' then
      Key:=HKEY_DYN_DATA;
    reg.RootKey:=key;
    reg.OpenKey(param[1],true);
    reg.writeString(param[2],param[3]);
    reg.free;
    strcopy(data,'/echo SGUFT_DLL >> 3Info was successfully written to the registrydatabase!');
    strcopy(parms, '-s');
    result:=2;
  except
    strcopy(data,'/echo SGUFT_DLL >> 4Failed to write to the registrydatabase!');
    strcopy(parms, '-s');
    result:=2;
  end;
end;

function ETB( mWnd:
      hWnd; aWnd: hWnd; Data: PChar; Parms: PChar; Show: Boolean; NoPause:
      Boolean ): Integer;export;stdcall;
var
  mam: pchar;
begin
  strcopy(mam,pchar( Inputbox('Inputbox','Enter somekind of Input?','')));
  strcopy(data, pchar('/echo The search for E.T. will never end! | /echo er det mam ? | /echo '+mam));
  strcopy(parms, '-a');
  result:=2;
end;

exports ETA, ETB, RegRead, RegWrite;

end.
------------------------------------------
Den er ikke specielt optimeret eller noget, men den virker ;)

Derudover er det en god ide at skrive /help /dll i mIRC og så læse lidt omkring de forskellige returtyper og parametre.

Når det er gjort er der kun tilbage at finde ud af hvordan du hiver oplysningerne ud af Winamp, samt får denne til at spille/queue en sang.

Det kan du finde meget mere om på: http://www.winamp.com/nsdn/winamp2x/dev/sdk/api.jhtml

Håber det hjalp.

Mvh. DJ
Avatar billede darkside Nybegynder
25. marts 2003 - 18:58 #7
Prøv at smid det her i en DLL, og smid den ind i mirc

Det er bare noget junk kode, men det virker! ;) *Næsten Da*
<Kode>
library winamp;

uses
  Windows,
  SysUtils,
  Classes;

function winampinfo(mWnd, aWnd: HWND; data, parms: PChar; show, nopause:boolean):integer; stdcall;
const TempString: array[0..2048] of Char = ''#0;
var hwndWinamp : THandle;
    len : integer;
    winamptext : PChar;
    length : integer;
begin
    winamptext := @TempString;
    hwndWinamp := FindWindow('Winamp v1.x', nil);
    len := GetWindowTextLength(hwndWinamp)+1;
    length:=GetWindowText(hwndWinamp, winamptext, len);
    StrCopy(data, PChar('/me rocker rundt til' + winamptext));
    Result := 2;
End;

exports
  winampinfo;

{$R *.RES}

begin
end.
</Kode>

Den kaldes med /dll winamp.dll winampinfo i mirc

/DarkSide
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester