Jump to content

Recommended Posts

Posted (edited)

#NoTrayIcon
#include <GUIConstants.au3>
#include <Array.au3>
#include <String.au3>
#Include <GuiEdit.au3>
$Convert = GUICreate("Convert API VB to Autoit Function", 466, 333, -1,
-1)
GUISetBkColor(0xB6D9FC)
$Label1 = GUICtrlCreateLabel("Visual Basic API to convert", 32, 8, 132,
17)
$Label2 = GUICtrlCreateLabel("Convet to Dll Func in Autoit", 32, 144,
133, 17)
$Edit1 = GUICtrlCreateEdit("", 16, 24, 433, 105)
GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
GUICtrlSetColor(-1, 0x800000)
$Edit2 = GUICtrlCreateEdit("", 17, 160, 431, 121)
GUICtrlSetData(-1, "")
GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
GUICtrlSetColor(-1, 0x000080)
$Button1 = GUICtrlCreateButton("&Convert", 64, 296, 75, 25, 0)
GUICtrlSetTip(-1, "Convert to autoit")
GUICtrlSetCursor (-1, 0)
$Button2 = GUICtrlCreateButton("&Paste", 200, 296, 75, 25, 0)
GUICtrlSetTip(-1, "Paste API")
GUICtrlSetCursor (-1, 0)
$Button3 = GUICtrlCreateButton("&Copy", 336, 296, 75, 25, 0)
GUICtrlSetTip(-1, "Copy Autoit Function")
GUICtrlSetCursor (-1, 0)
GUISetState (@SW_SHOW)
_GUICtrlEditGetRECT ( $Edit1 )
$About = GUICtrlCreateMenuitem ("About", GUICtrlCreateContextMenu ())
Global $String, $FuncName, $Dll, $Func, $VarNums, $i, $VarReturn,
$Data, $FuncParam, $DllParam, $n
GUICtrlSetData ($Edit1, StringReplace (IniRead ("API_TO_AU.ini",
"Setting", "Input", ""), "|", @CRLF))
GUICtrlSetData ($Edit2, StringReplace (IniRead ("API_TO_AU.ini",
"Setting", "Output", ""), "|", @CRLF))
;Set Example
If StringInStr(GUICtrlRead($Edit1), "Function") = 0 Then $Example =
'Declare Function WindowFromPoint Lib "user32"' & @CRLF & _
'Alias "WindowFromPoint" (ByVal xPoint As Long, ByVal yPoint As Long)
As Long' GUICtrlSetData($Edit1, $Example)
EndIf
_GUICtrlEditSetSel ($Edit1, 0, -1)
While 1 $nMsg = GUIGetMsg () Switch $nMsg Case $GUI_EVENT_CLOSE Exit
EndSwitch Select Case $nMsg = $Button1 $String = GUICtrlRead ($Edit1)
If $String <> "" Then $FuncName = _StringWordNext($String,
"Function", 1) $Dll = StringReplace (_StringWordNext($String,
"Function", 3), '"', "") If StringRight ($Dll, 4) <> ".dll" then
$Dll = $Dll & ".dll" If StringInStr ($String, "Alias") Then $Func =
_StringWordNext($String, "Alias", 1) Else $Func = $FuncName EndIf
$VarReturn = ConvertType(_StringWordNext($String, "Function", -1))
$StrExt = StringTrimLeft($String, StringInStr($String, "(") - 1)
$AsSplit = StringRegExp($StrExt, '[ ]([Aa]s)[ ]', 3) If Not @error Then
$n = UBound($AsSplit) - 1 If $n > 0 Then Dim $Var1[$n], $Var2[$n],
$Var3[$n] For $i = 0 To $n - 1 $Var1[$i] = StringRegExpReplace
(_StringWordPrevious($StrExt, "As", 1, $i + 1), '[,)(]', "") $Var2[$i]
= ConvertType(StringRegExpReplace (_StringWordNext($StrExt, "As", 1, $i
+ 1), '[,)(]', "")) $Var3[$i] = StringRegExpReplace
(_StringWordPrevious($StrExt, "As", 2, $i + 1), '[,)(]', "") Next EndIf
EndIf;_ArrayDisplay($Var1 & $Var2 & $Var3, "fd");Glue data
$Data = 'Func ' & $FuncName If $n <> 0 Then If $Var3[0] =
"ByRef" Then $FuncParam = "ByRef $" & $Var1[0] Else $FuncParam =
"$" & $Var1[0] EndIf For $i = 1 To UBound ($Var1) - 1 If $Var3[$i]
= "ByRef" Then $FuncParam = $FuncParam & ", ByRef $" &
$Var1[$i] Else $FuncParam = $FuncParam & ", $" & $Var1[$i]
EndIf Next $Data = $Data & "(" & $FuncParam & ")" &
@CRLF Else $Data = $Data & "()" & @CRLF EndIf $Data = $Data
& " Global $Return" & @CRLF $Data = $Data & " $Return =
DllCall (" & '"' & $Dll & '", ' & '"' & $VarReturn
& '", ' If $n <> 0 Then $Data = $Data & '"' & $Func
Else $Data = $Data & '"' & $Func & '"' EndIf If $n <>
0 Then $DllParam = "" For $i = 0 To UBound ($Var1) - 2 $DllParam =
$DllParam & ', ' & $Var2[$i] & ', $' & $Var1[$i] Next
$DllParam = $DllParam & ', ' & $Var2[UBound ($Var1) - 1] &
', $' & $Var1[UBound ($Var1) - 1] & ')' & @CRLF $Data =
$Data & $DllParam Else $Data = $Data & ')' & @CRLF EndIf If $n <> 0 Then
If $Var2[UBound ($Var1) - 1] <> "str" And $Var2[UBound ($Var1) -
2] = "str" Then $Data = $Data & ' Return $Return[2]' & @CRLF
Else $Data = $Data & ' Return $Return[0]' & @CRLF EndIf Else
$Data = $Data & ' Return $Return[0]' & @CRLF EndIf $Data =
$Data & 'EndFunc' GUICtrlSetData ($Edit2, $Data) IniWrite
("API_TO_AU.ini", "Setting", "Input", StringReplace ($String, @CRLF,
"|")) IniWrite ("API_TO_AU.ini", "Setting", "Output", StringReplace
($Data, @CRLF, "|")) EndIf Case $nMsg = $Button2 If ClipGet () <>
"" Then GUICtrlSetData ($Edit1, ClipGet ()) EndIf Case $nMsg = $Button3
If _GUICtrlEditGetSel ($Edit1) <> 0 Then
ClipPut(_GUICtrlEditGetSel ($Edit1)) Else ClipPut (GUICtrlRead
($Edit2)) EndIf Case $nMsg = $About MsgBox (64, "Infomation", "Author:
HelloMotorola") EndSelect WEnd
Func _StringWordNext($Phrase, $Word, $Next = 1, $PhrasePos = 1) If
StringRight ($Phrase, 1) <> " " Then $Phrase = $Phrase & " "
$WordPos = StringInStr ($Phrase, $Word, 0, $PhrasePos) If $WordPos
<> 0 Then $StringSearch = StringTrimLeft ($Phrase, $WordPos - 1)
$Array = StringRegExp ($StringSearch, "\b(.*?)[ ]", 3) If Not @error
Then If $Next > 0 Then If $Next < UBound ($Array) Then Return
$Array[$Next] Else Return "" EndIf ElseIf $Next = 0 Then Return UBound
($Array);Return number word Next Else If $Next = -1 Then Return
$Array[UBound ($Array) - 1];Return word last Else Return "" EndIf EndIf
Else Return "" EndIf Else Return "" EndIf
EndFunc;==>_StringWordNext
Func _StringWordPrevious($Phrase, $Word, $Previous = 1, $PhrasePos = 1)
If StringRight ($Phrase, 1) <> " " Then $Phrase = $Phrase & "
" $WordPos = StringInStr ($Phrase, $Word, 0, $PhrasePos) If $WordPos
<> 0 Then $StringSearch = StringLeft ($Phrase, $WordPos - 1)
$Array = StringRegExp ($StringSearch, "\b(.*?)[ ]", 3) If Not @error
Then $ArraySize = UBound ($Array) If $Previous > 0 Then If $Previous
< $ArraySize + 1 Then Return $Array[$ArraySize - $Previous] Else
Return "" EndIf ElseIf $Previous = 0 Then Return UBound ($Array);Return
number word Previous Else If $Previous = -1 Then;Return word first
Return $Array[0] Else Return "" EndIf EndIf Else Return "" EndIf Else
Return "" EndIf
EndFunc;==>_StringWordPrevious
Func ConvertType($Value) $TypeAu = "" $VBType = StringSplit
("long|RECT|OVERLAPPED|Boolean|String|Integer|any", "|"); Boolean = int
$AutoitType = StringSplit ("int|ptr|ptr|str|str|int|ptr", "|") For $t =
1 To UBound ($VBType) - 1 If $Value = $VBType[$t] Then $TypeAu = '"'
& $AutoitType[$t] & '"' ExitLoop EndIf Next If $TypeAu = ""
Then If FileExists("API Constants.au3") Then $File = FileOpen("API
Constants.au3", 0) $FileRead = FileRead ($File) $Line =
StringSplit($FileRead, @CRLF, 1) If StringLeft($Value, 1) = "_" Then $m
= "1" If StringLeft($Value, 1) = "0" Then $m = "9" If
StringLeft($Value, 1) = "1" Then $m = "20" If StringLeft($Value, 1) =
"A" Then $m = "22" If StringLeft($Value, 1) = "B" Then $m = "1702" If
StringLeft($Value, 1) = "C" Then $m = "2459" If StringLeft($Value, 1) =
"D" Then $m = "7008" If StringLeft($Value, 1) = "E" Then $m = "13144"
If StringLeft($Value, 1) = "F" Then $m = "16196" If StringLeft($Value,
1) = "G" Then $m = "17280" If StringLeft($Value, 1) = "H" Then $m =
"17942" If StringLeft($Value, 1) = "I" Then $m = "18716" If
StringLeft($Value, 1) = "J" Then $m = "21704" If StringLeft($Value, 1)
= "K" Then $m = "22113" If StringLeft($Value, 1) = "L" Then $m =
"22590" If StringLeft($Value, 1) = "M" Then $m = "24603" If
StringLeft($Value, 1) = "N" Then $m = "29715" If StringLeft($Value, 1)
= "O" Then $m = "31642" If StringLeft($Value, 1) = "P" Then $m =
"32933" If StringLeft($Value, 1) = "Q" Then $m = "35517" If
StringLeft($Value, 1) = "R" Then $m = "35773" If StringLeft($Value, 1)
= "S" Then $m = "38180" If StringLeft($Value, 1) = "T" Then $m =
"45185" If StringLeft($Value, 1) = "U" Then $m = "46863" If
StringLeft($Value, 1) = "V" Then $m = "47354" If StringLeft($Value, 1)
= "W" Then $m = "48017" If StringLeft($Value, 1) = "X" Then $m =
"50288" If StringLeft($Value, 1) = "Y" Then $m = "50451" If
StringLeft($Value, 1) = "Z" Then $m = "50452" If $m < UBound($Line)
- 1 Then For $m = 1 To UBound($Line) - 1 If StringInStr($Line[$m],
"Const") Then If StringInStr(_StringWordNext($Line[$m], "Const", 1),
$Value) Then If StringIsDigit(StringRight(_StringWordNext($Line[$m],
"Const", 2), 1)) Then $TypeAu = '"' & _StringWordNext($Line[$m],
"Const", 2) & '"' ExitLoop EndIf If StringInStr($Line[$m], '"', 0 ,
2) <> 0 Then $NewValue = _StringBetween($Line[$m], '"', '"')
$TypeAu = '"' & $NewValue[0] & '"' ExitLoop EndIf If
StringInStr($Line[$m], 'BitOR') Then If StringInStr($Line[$m], '(') And
StringInStr($Line[$m], ')') Then $NewValue = _StringBetween($Line[$m],
'(', ')') $TypeAu = 'BitOR' & '(' & $NewValue[0] & ')'
ExitLoop EndIf EndIf ExitLoop EndIf EndIf Next EndIf EndIf EndIf If
$TypeAu = "" Then $TypeAu = '"' & $Value & '"' Return $TypeAu
EndFunc;==>ConvertType

Download Proggrame ==> 14/9

Convert_API_VB_to_Autoit_Function.au3

API (support and accompany with Proggrame) 14/9

API_Constants.rar

Edited by Helomotorola
Posted

so this makes and .au3 file out of a vb source file? very sweet... i would like to see that work the other way round though...

Sweet! That is way cool! Thanx for sharing.. biggrin.gif

Thank your praise! I will endeavour more and very hope help me. Thank

Posted

Hello, since I wanted to convert this one, I've tried your script but I think something went wrong:

Private Declare Function NetUserGetGroups Lib "netapi32" (lpServer As Any, UserName As Byte, ByVal Level As Long, lpBuffer As Long, ByVal PrefMaxLen As Long, lpEntriesRead As Long, lpTotalEntries As Long) As LongoÝ÷ Øý½è(¶Øb±«­¢+ÙÕ¹9ÑUÍÉÑɽÕÁÌ ÀÌØí1Ù°°ÀÌØíAÉ5á1¸¤(%±½°ÀÌØíIÑÕɸ($ÀÌØíIÑÕɸô±±
±° ÅÕ½Ðí¹ÑÁ¤Ìȹ±°ÅÕ½Ðì°ÅÕ½Ðí¥¹ÐÅÕ½Ðì°ÅÕ½Ðí9ÑUÍÉÑɽÕÁ̰ÅÕ½Ðí¥¹ÐÅÕ½Ðì°ÀÌØí1Ù°°ÅÕ½Ðí¥¹ÐÅÕ½Ðì°ÀÌØíAÉ5á1¸¤(%IÑÕɸÀÌØíIÑÕɹlÁt)¹Õ¹

[topic="51913"]Restrict USB Storage usage to group membership[/topic] * [topic="48699"]Using nircmd library[/topic] * Some admin notes

Posted (edited)

helomotorola,

would you be so kind to post the code in AutoIt tags :) this way it looks much nicer :)

Besides that: Good job!

//Edit:

Thank you :P

Edited by Zephir

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...