I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
Nu er det jo et script du snakker om, så jeg kan jo ikke garantere at det opfører sig på samme måde som delphi. Hvor på linje 5 melder den om problemer? Lige ved external?
Prøv at ændre function GetTotalInd(Data: PChar): Integer; external \'network.dll\'; til en af nedenstående.
------------------------------------------ function GetTotalInd(Data: PChar): Integer; external \'network.dll\' name \'gettotalind\'; ------------------------------------------- function GetTotalInd(Data: PChar): Integer;stdcall; external \'network.dll\' name \'gettotalind\'; -------------------------------------------
function GetTotalInd() : Integer;export; var Stats: TMibIpStats; begin VVGetIpStatistics(Stats); with Stats do begin result:=dwInDelivers div 1024; end; end;
function GetTotalUd() : Integer;export; var Stats: TMibIpStats; begin VVGetIpStatistics(Stats); with Stats do begin result:=dwOutRequests div 1024; end; end;
GetTotalInd var oprindeligt lavet til mIRC hvor der skal være en data:pchar i dens call ...
function GetTotalInd() : Integer;export; var Stats: TMibIpStats; begin VVGetIpStatistics(Stats); with Stats do begin result:=dwInDelivers div 1024; end; end;
Funktionen bruger intet sted \"data\", iøvrigt er den version der ligger i dllen, med data:pchar som argument ...
skal du kalde dllen fra irc ?? for så skal du lav din irc dll lidt anderledes:
her er et eksempel som jeg fandt her på eksperten, det indeholder nogle funktioner, dem kan du bare slette
library irc_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. }
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 /test3 /echo
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.
###########################3
derefter kan du kalde dllen fra irc ved brug af denne kommando:
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.