Wäre einer von Euch so lieb mir zu zeigen wie ich diese dll in Autoit ansteuern kann ?
Werde aus dem Beispiel in C leider nicht schlau.
Beispiel in C:
[spoiler]
C
/*
poc-code to use rufid.dll (rufident) in c
author: jan bollacke
*/
#include <windows.h>
#include <stdio.h>
struct eintrag {
char markiert;
char titel[5];
char adel;
char namevorsatz;
char namezusatz;
char geschlecht;
char vorname[31];
char anrede[11];
char name[121];
char zusatz[121];
char ortsteil[41];
char strasse[47];
char hausnummer[11];
char hausnummerzusatz[21];
char land[4];
char plz[6];
char ort[71];
char vorwahl[11];
char telzusatz[16];
char telefon[21];
};
typedef void (WINAPI *st)(char *,struct eintrag**,int*);
typedef void (WINAPI *uv)(char);
void ansifyString(char *string) {
int size;
size=string[0];
memcpy(string,(string+1),size);
string[size]='\0';
}
void ansifyStrings(struct eintrag *entry) {
ansifyString(entry->vorname);
ansifyString(entry->anrede);
ansifyString(entry->name);
ansifyString(entry->zusatz);
ansifyString(entry->ortsteil);
ansifyString(entry->strasse);
ansifyString(entry->hausnummer);
ansifyString(entry->hausnummerzusatz);
ansifyString(entry->land);
ansifyString(entry->plz);
ansifyString(entry->ort);
ansifyString(entry->vorwahl);
ansifyString(entry->telzusatz);
ansifyString(entry->telefon);
}
int main(int argc, char* argv[]) {
FILE *fp;
char filename[256];
struct eintrag *entry=NULL;
st sucheTelefonnummer;
uv useVersion;
int n=1,i;
HANDLE hDll;
if (argc!=2) {
printf("usage: %s <no>\n",argv[0]);
return 1;
}
fp=fopen("C:/rufid.log","a");
fprintf(fp,"%d arguments passed\n",argc);
for (i=0;i<argc;i++)
fprintf(fp,"arg#%d: %s\n",i,argv[i]);
fclose(fp);
hDll=LoadLibrary("Rufid.dll");
if (hDll==NULL) {
printf("Failed to load DLL\n");
return 1;
}
GetModuleFileName(hDll,filename,256);
printf("DLL loaded (%s)\n",filename);
sucheTelefonnummer=(st)GetProcAddress(hDll,"SucheTelefonnummer");
if (sucheTelefonnummer==NULL) {
printf("Could not get the address for procedure '%s'","SucheTelefonnummer");
FreeLibrary(hDll);
return 1;
}
useVersion=(uv)GetProcAddress(hDll,"UseVersion");
if (useVersion==NULL) {
printf("Could not get the address for procedure '%s'","UseVersion");
FreeLibrary(hDll);
return 1;
}
useVersion(2);
sucheTelefonnummer(argv[1],&entry,&n);
if (n>0) {
ansifyStrings(&entry[0]);
fp=fopen("C:/caller.csv","w");
fprintf(fp,"\"%s\";\"%s %s %s\";0;;0",argv[1],entry[0].vorname,entry[0].name,entry[0].zusatz);
fclose(fp);
}
FreeLibrary(hDll);
return 0;
}
Alles anzeigen
[\spoiler]
Mein vermutlich peinlicher Versuch:
[autoit]Global $ergebniss
Global $nummer="02212154784"
$Open = DllOpen("RufIdent\Rufid.dll")
DllCall($Open, "str", "UseVersion", "int", "2")
$pGetRufIdentInfo = DllCall($Open, "str", "SucheTelefonnummer", "str", $nummer,"str", $ergebniss)
If Not $pGetRufIdentInfo Then
msgbox(0,"test","fehler",0)
Else
msgbox(0,"test",$ergebniss,0)
endif
exit
[/autoit]Danke