Mery用構文ファイル
MSBuild用プロジェクトファイルのテンプレート
.au3ファイルをExe化する。
<?xml version="1.0" encoding="utf-8" ?> <Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<!-- Aut2Exe.exeのフルパスとオプションの定義 --> <Choose> <!-- /p:Platform=x64 または /p:Platform=win64 オプションを指定した場合は64ビットバイナリを、 それ以外(デフォルト)は32ビットバイナリを生成 --> <When Condition="'$(Platform)'=='x64' Or '$(Platform)'=='win64'"> <PropertyGroup> <AUT2EXE>$(MSBuildProgramFiles32)\AutoIt3\Aut2Exe\Aut2exe_x64.exe</AUT2EXE> <BINARY>/x64</BINARY> </PropertyGroup> </When> <Otherwise> <PropertyGroup> <AUT2EXE>$(MSBuildProgramFiles32)\AutoIt3\Aut2Exe\Aut2Exe.exe</AUT2EXE> <BINARY>/x86</BINARY> </PropertyGroup> </Otherwise> </Choose>
<!-- x86/x64共通オプションの定義 --> <PropertyGroup> <OPTIONS>/comp 0 /nopack</OPTIONS> </PropertyGroup>
<!-- ソースファイル名;foo.au3→foo.exeとする場合 --> <ItemGroup> <SOURCE_FILES Include="foo.au3" /> <!-- <SOURCE_FILES Include="foo2.au3" /> <SOURCE_FILES Include="foo3.au3" /> : --> </ItemGroup>
<!-- ソースファイル名;foo.au3→foo.exeとする場合 --> <ItemGroup> <SOURCE_FILES2 Include="bar.au3"> <EXE_FILE>baz.exe</EXE_FILE> </SOURCE_FILES2> <!-- <SOURCE_FILES2 Include="bar2.au3"> <EXE_FILE>baz2.exe</EXE_FILE> </SOURCE_FILES2> <SOURCE_FILES2 Include="bar3.au3"> <EXE_FILE>baz3.exe</EXE_FILE> </SOURCE_FILES2> : --> </ItemGroup>
<!-- Buildターゲットからビルド後に呼び出されるターゲット --> <Target Name="Build" Inputs="@(SOURCE_FILES);@(SOURCE_FILES2)" Outputs="@(SOURCE_FILES->'%(Filename).exe');%(SOURCE_FILES2.EXE_FILE)"> <Exec Command="%22$(AUT2EXE)%22 /in %22%(SOURCE_FILES.Identity)%22 $(OPTIONS) $(BINARY)" WorkingDirectory="$(MSBuildProjectDirectory)" Condition="'@(SOURCE_FILES->Count())' > 0" /> <Exec Command="%22$(AUT2EXE)%22 /in %22@(SOURCE_FILES2)%22 /out %22%(EXE_FILE)%22 $(OPTIONS) $(BINARY)" WorkingDirectory="$(MSBuildProjectDirectory)" Condition="'@(SOURCE_FILES2->Count())' > 0" /> </Target>
</Project>
レーベンシュタイン距離を求める
#include <Math.au3>
; https://nayose.net/$blog/address/246/ をベタ移植 Func lsDist($baseText, $tryText) If $baseText = $tryText Then Return 0
$bl = StringLen($baseText) $tl = StringLen($tryText) If $bl = 0 Then Return $tl If $tl = 0 Then Return $bl
Local $matrix[$bl+1][$tl+1] For $i = 0 To $bl $matrix[$i][0] = $i Next For $j = 0 To $tl $matrix[0][$j] = $j Next
For $i = 1 To $bl For $j = 1 To $tl If StringMid($baseText, $i, 1) = StringMid($tryText, $j, 1) Then $cost = 0 Else $cost = 1 EndIf $matrix[$i][$j] = _Min(_Min($matrix[$i-1][$j]+1, $matrix[$i][$j-1]+1), $matrix[$i-1][$j-1]+$cost) Next Next Return $matrix[$bl][$tl] EndFunc
Outlookで新規メール送信
#include "OutlookEx.au3" ; https://www.autoitscript.com/forum/files/file/381-outlookex/ からDL
Dim $toAdr = "(送信先メールアドレス)" Dim $ccAdr = "" Dim $bccAdr = "" Dim $subject = "テストメール" Dim $body = "テストです"
$objOutlook = _OL_Open() _OL_Wrapper_SendMail($objOutlook, $toAdr, $ccAdr, $bccAdr, $subject, $body) _OL_Close($objOutlook)
Outlookでメール着信を監視
#include <MsgBoxConstants.au3>
$objOutlook = ObjGet("", "Outlook.Application") If @error Then Exit $objEvent = ObjEvent($objOutlook, "OL_") If @error Then Exit
While 1 Sleep(500) WEnd
Func OL_NewMailEx($id) MsgBox($MB_OK, "Outlook", "NewMailEx() called.", 3) EndFunc
Func OL_Quit() Exit EndFunc
sqlite3.dll利用
#include <SQLite.au3> #include <SQLite.dll.au3>
Local $sqls, $i, $tbl, $row, $col
_SQLite_Startup() MsgBox(0, "version", _SQLite_LibVersion()) _SQLite_Open(@ScriptDir & "\test.db")
_SQLite_Exec(-1, "CREATE TABLE list(id INTEGER, title TEXT);")
For $i = 1 To 10 $sqls &= StringReplace("INSERT INTO list VALUES(#, 'test#');", "#", $i) Next
_SQLite_Exec(-1, "BEGIN TRANSACTION;") _SQLite_Exec(-1, $sqls) _SQLite_Exec(-1, "COMMIT TRANSACTION;")
_SQLite_GetTable2d(-1, "SELECT * FROM list WHERE id > 5;", $tbl, $row, $col) For $i = 0 To $row MsgBox(0, "table", $tbl[$i][0] & ": " & $tbl[$i][1]) Next
_SQLite_Close() _SQLite_Shutdown()
nMail.dll利用
; nMail.dllを使ったメール送信(nMail.dllはhttp://www.nanshiki.co.jp/からDL) #include <MsgBoxConstants.au3>
Global $NULL = 0
DllCall("nMail.dll", "BOOLEAN", "NMailInitializeWinSock") ;$ret = DllCall("nMail.dll", "int", "NMailGetVersion") ;MsgBox($MB_OK, Default, "NMailGetVersion = " & $ret[0])
$smtp = "SMTPサーバ名" $to = "送信先メールアドレス" $cc = $NULL $bcc = $NULL $from = "送信元メールアドレス" $subject = "サブジェクト" $body = "本文" $header = $NULL $path = $NULL $flag = 0 $port = 25 $ret = DllCall("nMail.dll", "int", "NMailSmtpSendMailPortNoW", "wstr", $smtp, "wstr", $to, ArgType($cc), $cc, ArgType($bcc), $bcc, "wstr", $from, "wstr", $subject, "wstr", $body, ArgType($header), $header, ArgType($path), $path, "int", $flag, "int", $port) MsgBox($MB_OK, Default, "NMailSmtpSendMailPortNoW = " & $ret[0])
DllCall("nMail.dll", "BOOLEAN", "NMailEndWinSock")
Func ArgType($arg) If $arg == $NULL Then Return "int" Else Return "wstr" EndIf EndFunc