Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > General Coding
You last visited: Today at 20:00

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



AutoItX: WinGetHandle

Discussion on AutoItX: WinGetHandle within the General Coding forum part of the Coders Den category.

Reply
 
Old   #1
 
mr.rattlz's Avatar
 
elite*gold: 0
Join Date: Aug 2005
Posts: 896
Received Thanks: 334
AutoItX: WinGetHandle

Einen wunderschönen guten Morgen allerseits, ich bin mittlerweile etwas müde, darum kann es sein, dass das, was ich schreibe keinen Sinn ergibt, also ist das Lesen dieses Textes ab dieser Stelle auf eigene Gefahr.


Ich wollte einige Funktionen von AutoIt in ein freepascal Projekt einbinden und habe erstmal festgestellt, dass bei weitem nicht alle Funktionen in der Dll zur Verfügung gestellt werden, aber die, die ich haben will sind da, von daher schon mal kein Problem.

Jetzt komme ich aber irgendwie mit der Funktion "WinGetHandle" nicht zurecht.
Zuallererst einmal, ist sie im C-Header irgendwie ziemlich merkwürdig deklariert:
Code:
AU3_API void WINAPI AU3_WinGetHandle(const char *szTitle, /*[in,defaultvalue("")]*/const char *szText, char *szRetText, int nBufSize);
im Vergleich zu AutoIt-Code:
Code:
WinGetHandle "title" [, "text"]
----- und an dieser Stelle bemerke ich, dass die Funktion einen String und keine Zahl zurückgibt und darum nen Buffer braucht. Das erklärt natürlich auch, warum das Ergebnis, das ich bekommen habe so merkwürdig war
Da ich angefangen hatte zu schreiben wollte ich das jetzt hier nicht einfach wieder löschen, und lasse es einfach mal als Warnung für andere Menschen da, die meinen sie müssten um diese Uhrzeit noch programmieren

Der folgende Perlcode bastelt übrigens pascalcode aus der Headerdatei von AutoItX:
Code:
#!/usr/bin/perl

$header='unit AutoIt3;
{$mode objfpc}{$H+}
{
    AutoIt3 freepascal includefile, generated automatically from AutoIt3.h with a converter 
}'."\n\n\n\ninterface\n\n";
open(INPUT,"<AutoIt3.h");
@lines=<INPUT>;
close(INPUT);
open(OUTPUT,">autoit3.pas");
print OUTPUT $header;
for $line(@lines){
  if($line=~/^\s*AU3_API\s*\w*\s*winapi.*;\s*/i){
    if($line=~/^\s*AU3_API\s*long.*;\s*/i){
      $line=~s/^\s*AU3_API\s*long\s*WINAPI\s*(.*?)\s*?(\(.*);/function \1\2:longint;stdcall; external 'AutoItX3' name '\1';/i;
    }elsif($line=~/^\s*AU3_API\s*void.*;\s*/i){
      $line=~s/^\s*AU3_API\s*void\s*WINAPI\s*(.*?)\s*?(\(.*);/procedure \1\2;stdcall; external 'AutoItX3' name '\1';/i;
    }
  $line=~s/\/\*.*?\*\///gi;    
  $line=~s/\(\s*void\s*\)/()/i;
  $line=~s/(\W*)const\s+char\s+\*(\w*)/\1\2:PChar/gi;
  $line=~s/(\W*)char\s+\*(\w*)/\1\2:Pointer/gi;
  $line=~s/(\W*)(long|int)\s+(\w*)/\1\3:longint/gi;
  $line=~s/,/;/g;
  #$line=~s/(\W*)int\s+(\w*)/\1\2:longint/gi;
  #$line=~s/\W//g;
  #print $line;
  print OUTPUT "  $line";
  }
  
}
print OUTPUT "implementation\n\nend.\n";
close (OUTPUT);
Es gibt zwar wohl irgendwo ein h2pas, aber da ich davon ausging, dass ich das sowieso von Hand korrigieren müsste habe ich es lieber direkt selber geschrieben.
Und damit wünsche ich euch allen eine gute Nacht

Post Scriptum:
Dieses Forum braucht dringend viel mehr Syntax Highlighting :f


Post Scriptum 2: Gnaaaa, Fensterhandle als String
mr.rattlz is offline  
Reply


Similar Threads Similar Threads
[Discussion] Dll Hooking and AutoITX
05/07/2010 - Mabinogi - 18 Replies
So... I'm not sure if this is the proper place to discuss such a topic, but I've been stalking and every now and then I see a glimmer of intellect amongst this group. If any of you have used AutoITX (the COM/DLL interface to AutoIT), I'm sure you know that you can program using just about any language that supports COM programming, or DLL imports, which is a rather large group of languages. Now, please excuse me if I say something completely wrong, as this is not my field of expertise...



All times are GMT +1. The time now is 20:01.


Powered by vBulletin®
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2026 elitepvpers All Rights Reserved.