(AHK)(AutoHotkey)
ぼちぼちと作り直し中の _Lib_StdLibrary.ahk の 経過報告です
API関数を別に定義した事によって直接呼び出せるようになってますね
あと、極力 以前のと 仕様が変わらないようにもしてます
API関数を別に定義した事によって直接呼び出せるようになってますね
あと、極力 以前のと 仕様が変わらないようにもしてます
CurDir() { VarSetCapacity(buf, 260, 0x00) api_GetCurrentDirectory(260, &buf) VarSetCapacity(buf, -1) Return buf } Divmod(Numeric, Divisor, ByRef Quotient, ByRef Modulus) { Quotient := Numeric // Divisor Modulus := Mod(Numeric, Divisor) Return Quotient } DL2DN(DriveLetter) { If ( (DriveLetter < 0) or (DriveLetter > 25) ) Return "" Return Chr(DriveLetter + 0x61) . ":" } DumpMem(FileName, pBuffer, WriteSize) { If ( (hFile := api_CreateFile(&FileName, 0x40000000, 0x0, 0x0, 0x2, 0x80, 0x0)) == 0xFFFFFFFF ) Return 0 res := api_WriteFile(hFile, pBuffer, WriteSize, WrittenSize, 0x0) api_CloseHandle(hFile) If ( res ) Return WrittenSize Else Return "" } E2D(Expression) { Expression := RegExReplace(Expression, "\\$", "") VarSetCapacity(buf, 260, 0x00) buf := Expression api_PathRemoveFileSpec(&buf) VarSetCapacity(buf, -1) Return buf } E2Dri(Expression) { Return DL2DN(api_PathGetDriveNumber(&Expression)) } E2E(Expression) { VarSetCapacity(buf, 260, 0x00) api_lstrcpy(&buf, api_PathFindExtension(&Expression)) VarSetCapacity(buf, -1) Return buf } E2F(Expression) { VarSetCapacity(buf, 260, 0x00) api_lstrcpy(&buf, api_PathFindFileName(&Expression)) api_PathRemoveExtension(&buf) VarSetCapacity(buf, -1) Return buf } E2FE(Expression) { VarSetCapacity(buf, 260, 0x00) api_lstrcpy(&buf, api_PathFindFileName(&Expression)) VarSetCapacity(buf, -1) Return buf } EnumProcess() { hPS := api_CreateToolhelp32Snapshot(0x2, 0x0) VarSetCapacity(PE, 296, 0x00) NumPut(296, PE, 0, "UInt") If ( api_Process32First(hPS, &PE) ) { dat .= NumGet(PE, 8, "UInt") . "," . StrGet(&PE + 36, 260) . "," . NumGet(PE, 24, "UInt") . "`n" Loop { If ( api_Process32Next(hPS, &PE) ) dat .= NumGet(PE, 8, "UInt") . "," . StrGet(&PE + 36, 260) . "," . NumGet(PE, 24, "UInt") . "`n" Else Break } } api_CloseHandle(hPS) Return dat } ErrCode2Mes(ErrorCode, BufferSize = 512) { VarSetCapacity(buf, BufferSize, 0x00) LangID := (0x00 | (0x02 << 10)) api_FormatMessage(0x1000, 0x0, ErrorCode, LangID, &buf, BufferSize, 0x0) VarSetCapacity(buf, -1) Return buf } FileSize(FileName) { If ( (hFile := api_CreateFile(&FileName, 0x80000000, 0x0, 0x0, 0x3, 0x0, 0x0)) == 0xFFFFFFFF ) Return 0 VarSetCapacity(LargeInteger, 8, 0x00) api_GetFileSizeEx(hFile, &LargeInteger) api_CloseHandle(hFile) Return NumGet(LargeInteger, 0, "UInt64") } FN2FL(FileName) { VarSetCapacity(buf, 260, 0x00) api_GetLongPathName(&FileName, &buf, 260) VarSetCapacity(buf, -1) api_GetFullPathName(&buf, 260, &buf, 0x0) VarSetCapacity(buf, -1) Return buf } FN2FS(FileName) { VarSetCapacity(buf, 260, 0x00) api_GetShortPathName(&FileName, &buf, 260) VarSetCapacity(buf, -1) api_GetFullPathName(&buf, 260, &buf, 0x0) VarSetCapacity(buf, -1) Return buf } FN2IsD(FileName) { Return api_PathIsDirectory(&FileName) } FN2IsE(FileName) { Return api_PathFileExists(&FileName) } FN2L(FileName) { VarSetCapacity(buf, 260, 0x00) api_GetLongPathName(&FileName, &buf, 260) VarSetCapacity(buf, -1) Return buf } FN2S(FileName) { VarSetCapacity(buf, 260, 0x00) api_GetShortPathName(&FileName, &buf, 260) VarSetCapacity(buf, -1) Return buf } H2C(hWindow) { VarSetCapacity(buf, 256, 0x00) api_GetClassName(hWindow, &buf, 256) VarSetCapacity(buf, -1) Return buf } H2PID(hWindow) { VarSetCapacity(buf, 4, 0x00) api_GetWindowThreadProcessId(hWindow, &buf) Return NumGet(buf, 0, "UInt") } H2PN(hWindow) { If !( PID := H2PID(hWindow) ) Return "" hPS := api_CreateToolhelp32Snapshot(0x2, 0x0) VarSetCapacity(PE, 296, 0x00) NumPut(296, PE, 0, "UInt") If ( api_Process32First(hPS, &PE) ) { If ( NumGet(PE, 8, "UInt") == PID ) { api_CloseHandle(hPS) Return StrGet(&PE + 36, 260) } Loop { If ( api_Process32Next(hPS, &PE) ) { If ( NumGet(PE, 8, "UInt") == PID ) { api_CloseHandle(hPS) Return StrGet(&PE + 36, 260) } }Else{ Break } } } api_CloseHandle(hPS) Return "" } H2T(hWindow, BufferSize = 200) { VarSetCapacity(buf, BufferSize, 0x00) api_GetWindowText(hWindow, &buf, BufferSize) VarSetCapacity(buf, -1) Return Buf } H2Thread(hWindow) { Return api_GetWindowThreadProcessId(hWindow, 0x0) } IME_GetConv(hWindow) { Return api_SendMessage(api_ImmGetDefaultIMEWnd(hWindow), 0x283, 0x1, 0x0) } IME_IsON(hWindow) { Return api_SendMessage(api_ImmGetDefaultIMEWnd(hWindow), 0x283, 0x5, 0x0) } IME_IsKana(hWindow) { If ( (IME_GetConv(hWindow) & 0x10) == 0x10 ) Return 0 Return 1 } IME_IsRoman(hWindow) { If ( (IME_GetConv(hWindow) & 0x10) == 0x10 ) Return 1 Return 0 } IME_OFF(hWindow) { If ( !api_IsWindow(hWindow)) Return 0 If ( !IME_IsON(hWindow) ) Return 1 Return ( !api_SendMessage(api_ImmGetDefaultIMEWnd(hWindow), 0x283, 0x6, 0x0) ) } IME_ON(hWindow) { If ( !api_IsWindow(hWindow)) Return 0 If ( IME_IsON(hWindow) ) Return 1 Return ( !api_SendMessage(api_ImmGetDefaultIMEWnd(hWindow), 0x283, 0x6, 0x1) ) } IME_SetConv(hWindow,ConversionMode) { Return api_SendMessage(api_ImmGetDefaultIMEWnd(hWindow), 0x283, 0x2, ConversionMode) } M2A() { hWindow := M2PH() WinActivate, ahk_id %hWindow% Return } M2H() { VarSetCapacity(buf, 8, 0x00) api_GetCursorPos(&buf) Return api_WindowFromPoint(NumGet(buf, 0, "Int"), NumGet(buf, 4, "Int")) } M2PH() { MouseGetPos, , , hWindow Return hWindow } MCI_Close(AliasName) { global MCI_CMD_STRING MCI_CMD_STRING := "close " . AliasName Return api_mciSendString(&MCI_CMD_STRING, 0x0, 0x0, 0x0) } MCI_ErrCode2Mes(ErrorCode) { global MCI_BUFFER api_mciGetErrorString(ErrorCode, &MCI_BUFFER, 512) VarSetCapacity(MCI_BUFFER, -1) Return MCI_BUFFER } MCI_GetLength(AliasName) { global MCI_BUFFER, MCI_CMD_STRING MCI_CMD_STRING := "status " . AliasName . " length" api_mciSendString(&MCI_CMD_STRING, &MCI_BUFFER, 20, 0x0) VarSetCapacity(MCI_BUFFER, -1) Return (MCI_BUFFER + 0) } MCI_GetMode(AliasName) { global MCI_BUFFER, MCI_CMD_STRING MCI_CMD_STRING := "status " . AliasName . " mode" api_mciSendString(&MCI_CMD_STRING, &MCI_BUFFER, 20, 0x0) VarSetCapacity(MCI_BUFFER, -1) Return MCI_BUFFER } MCI_GetPosition(AliasName) { global MCI_BUFFER, MCI_CMD_STRING MCI_CMD_STRING := "status " . AliasName . " position" api_mciSendString(&MCI_CMD_STRING, &MCI_BUFFER, 20, 0x0) VarSetCapacity(MCI_BUFFER, -1) Return (MCI_BUFFER + 0) } MCI_Init(BufferSize = 512) { global MCI_BUFFER, MCI_CMD_STRING MCI_CMD_STRING := "" Return VarSetCapacity(MCI_BUFFER, 512, 0x00) } MCI_Open(DataName, AliasName) { global MCI_CMD_STRING MCI_CMD_STRING := "open " . """" . DataName . """" . " alias " . AliasName Return api_mciSendString(&MCI_CMD_STRING, 0x0, 0x0, 0x0) } MCI_Pause(AliasName) { global MCI_CMD_STRING MCI_CMD_STRING := "pause " . AliasName Return api_mciSendString(&MCI_CMD_STRING, 0x0, 0x0, 0x0) } MCI_Play(AliasName) { global MCI_CMD_STRING MCI_CMD_STRING := "play " . AliasName Return api_mciSendString(&MCI_CMD_STRING, 0x0, 0x0, 0x0) } MCI_Seek(AliasName, Position) { global MCI_CMD_STRING MCI_CMD_STRING := "seek " . AliasName . " to " . Position Return api_mciSendString(&MCI_CMD_STRING, 0x0, 0x0, 0x0) } MCI_SetFormatMS(AliasName) { global MCI_CMD_STRING MCI_CMD_STRING := "set " . AliasName . " time format ms" Return api_mciSendString(&MCI_CMD_STRING, 0x0, 0x0, 0x0) } MCI_SetFormatMSF(AliasName) { global MCI_CMD_STRING MCI_CMD_STRING := "set " . AliasName . " time format msf" Return api_mciSendString(&MCI_CMD_STRING, 0x0, 0x0, 0x0) } MCI_SetFormatTMSF(AliasName) { global MCI_CMD_STRING MCI_CMD_STRING := "set " . AliasName . " time format tmsf" Return api_mciSendString(&MCI_CMD_STRING, 0x0, 0x0, 0x0) } MCI_Stop(AliasName) { global MCI_CMD_STRING MCI_CMD_STRING := "stop " . AliasName Return api_mciSendString(&MCI_CMD_STRING, 0x0, 0x0, 0x0) } RandomFileSelect(FileMatchPatterns) { Count := 0 Loop, Parse, FileMatchPatterns, `n { If ( A_LoopField == "" ) Break Loop, %A_LoopField% Count++ } Random, RandomIndex, 1, %Count% Count := 0 Loop, Parse, FileMatchPatterns, `n { Loop, %A_LoopField% { Count++ If ( Count == RandomIndex ) Return A_LoopFileLongPath } } Return "" } ReadFile(FileName) { If ( (hFile := api_CreateFile(&FileName, 0x80000000, 0x0, 0x0, 0x3, 0x0, 0x0)) == 0xFFFFFFFF ) Return "" VarSetCapacity(buf, 8, 0x00) api_GetFileSizeEx(hFile, &buf) fs := NumGet(buf, 0, "UInt64") VarSetCapacity(buf, fs, 0x00) api_ReadFile(hFile, &buf, fs, ReadedSize, 0x0) api_CloseHandle(hFile) VarSetCapacity(buf, -1) Return buf } RMExt(FileName) { api_PathRemoveExtension(&FileName) Return FileName } RunEx(ExecuteFileName, Parameter = "", WorkDirectory = "", SW_xxxx = 1, Operation = "open") { ExecuteFileName := FN2FL(ExecuteFileName) If ( WorkDirectory == "" ) WorkDirectory := E2D(ExecuteFileName) . "\" Return api_ShellExecute(0x0, &Operation, &ExecuteFileName, &Parameter, &WorkDirectory, SW_xxxx) } StrGet(pBuffer, BufferSize) { VarSetCapacity(buf, BufferSize, 0x00) api_lstrcpy(&buf, pBuffer) VarSetCapacity(buf, -1) Return buf } ;-------------------------------------------------------------------------------- ; Win32API ;-------------------------------------------------------------------------------- api_AttachThreadInput(AttachFrom, AttachTo, Flag) { Return DllCall("user32.dll\AttachThreadInput" , "UInt", AttachFrom , "UInt", AttachTo , "Int", Flag , "Int") } api_CharLower(pString) { Return DllCall("user32.dll\CharLower" , "UInt", pString , "UInt") } api_CharUpper(pString) { Return DllCall("user32.dll\CharUpper" , "UInt", pString , "UInt") } api_CloseHandle(Handle) { Return DllCall("kernel32.dll\CloseHandle" , "UInt", Handle , "Int") } api_CreateFile(pFileName, Access, Share, Security, Disposition, Attributes, hTemplate) { Return DllCall("kernel32.dll\CreateFile" , "UInt", pFileName , "UInt", Access , "UInt", Share , "UInt", Security , "UInt", Disposition , "UInt", Attributes , "UInt", hTemplate , "UInt") } api_CreateToolhelp32Snapshot(Flags, th32ProcessID) { Return DllCall("kernel32.dll\CreateToolhelp32Snapshot" , "UInt", Flags , "UInt", th32ProcessID , "UInt") } api_FormatMessage(Flag, pSource, MessageId, LanguageId, pBuffer, BufferSize, Arguments) { Return DllCall("kernel32.dll\FormatMessage" , "UInt", Flag , "UInt", pSource , "UInt", MessageId , "UInt", LanguageId , "UInt", pBuffer , "UInt", BufferSize , "UInt", Arguments , "UInt") } api_GetClassName(hWindow, pBuffer, BufferSize) { Return DllCall("user32.dll\GetClassName" , "UInt", hWindow , "UInt", pBuffer , "Int", BufferSize , "Int") } api_GetCurrentDirectory(BufferSize, pBuffer) { Return DllCall("kernel32.dll\GetCurrentDirectory" , "UInt", BufferSize , "UInt", pBuffer , "UInt") } api_GetCurrentThreadId() { Return DllCall("kernel32.dll\GetCurrentThreadId" , "UInt") } api_GetCursorPos(pPoint) { Return DllCall("user32.dll\GetCursorPos" , "UInt", pPoint , "Int") } api_GetDriveType(pRootDirectoryName) { Return DllCall("kernel32.dll\GetDriveType" , "UInt", pRootDirectoryName , "UInt") } api_GetFileSizeEx(hFile, pLargeInteger) { Return DllCall("kernel32.dll\GetFileSizeEx" , "UInt", hFile , "UInt", pLargeInteger , "Int") } api_GetForegroundWindow() { Return DllCall("user32.dll\GetForegroundWindow" , "UInt") } api_GetFullPathName(pFileName, BufferSize, pBuffer, pFilePart) { Return DllCall("kernel32.dll\GetFullPathName" , "UInt", pFileName , "UInt", BufferSize , "UInt", pBuffer , "UInt", pFilePart , "UInt") } api_GetLastError() { Return DllCall("kernel32.dll\GetLastError" , "UInt") } api_GetLongPathName(pFileName, pBuffer, BufferSize) { Return DllCall("kernel32.dll\GetLongPathName" , "UInt", pFileName , "UInt", pBuffer , "UInt", BufferSize , "UInt") } api_GetShortPathName(pFileName, pBuffer, BufferSize) { Return DllCall("kernel32.dll\GetShortPathName" , "UInt", pFileName , "UInt", pBuffer , "UInt", BufferSize , "UInt") } api_GetTickCount() { Return DllCall("kernel32.dll\GetTickCount" , "UInt") } api_GetWindowLong(hWindow, nIndex) { Return DllCall("user32.dll\GetWindowLong" , "UInt", hWindow , "Int", nIndex , "Int") } api_GetWindowText(hWindow, pBuffer, BufferSize) { Return DllCall("user32.dll\GetWindowText" , "UInt", hWindow , "UInt", pBuffer , "UInt", BufferSize , "Int") } api_GetWindowThreadProcessId(hWindow, pPID) { Return DllCall("user32.dll\GetWindowThreadProcessId" , "UInt", hWindow , "UInt", pPID , "UInt") } api_ImmGetDefaultIMEWnd(hWindow) { Return DllCall("imm32.dll\ImmGetDefaultIMEWnd" , "Uint", hWindow , "UInt") } api_IsWindow(hWindow) { Return DllCall("user32.dll\IsWindow" , "UInt", hWindow , "Int") } api_lstrcpy(pStringTo, pStringFrom) { Return DllCall("kernel32.dll\lstrcpy" , "UInt", pStringTo , "UInt", pStringFrom , "UInt") } api_lstrcpyn(pStringTo, pStringFrom, MaxLength) { Return DllCall("kernel32.dll\lstrcpyn" , "UInt", pStringTo , "UInt", pStringFrom , "Int", MaxLength , "UInt") } api_mciSendString(pCommandString, pBuffer, BufferSize, hCBWindow) { Return DllCall("winmm.dll\mciSendStringA" , "UInt", pCommandString , "UInt", pBuffer , "UInt", BufferSize , "UInt", hCBWindow , "UInt") } api_mciGetErrorString(ErrorCode, pBuffer, BufferSize) { Return DllCall("winmm.dll\mciGetErrorStringA" , "UInt", ErrorCode , "UInt", pBuffer , "UInt", BufferSize , "Int") } api_PathFileExists(pFileName) { Return DllCall("shlwapi.dll\PathFileExistsA" , "UInt", pFileName) } api_PathFindExtension(pFileName) { Return DllCall("shlwapi.dll\PathFindExtensionA" , "UInt", pFileName , "UInt") } api_PathFindFileName(pFileName) { Return DllCall("shlwapi.dll\PathFindFileNameA" , "UInt", pFileName , "UInt") } api_PathGetDriveNumber(pFileName) { Return DllCall("shlwapi.dll\PathGetDriveNumberA" , "UInt", pFileName , "Int") } api_PathIsDirectory(pFileName) { Return DllCall("shlwapi.dll\PathIsDirectoryA" , "UInt", pFileName , "Int") } api_PathRemoveExtension(pFileName) { Return DllCall("shlwapi.dll\PathRemoveExtensionA" , "UInt", pFileName , "UInt") } api_PathRemoveFileSpec(pFileName) { Return DllCall("shlwapi.dll\PathRemoveFileSpecA" , "UInt", pFileName , "Int") } api_Process32First(hSnapshot, pPROCESSENTRY32) { Return DllCall("kernel32.dll\Process32First" , "UInt", hSnapshot , "UInt", pPROCESSENTRY32 , "Int") } api_Process32Next(hSnapshot, pPROCESSENTRY32) { Return DllCall("kernel32.dll\Process32Next" , "UInt", hSnapshot , "UInt", pPROCESSENTRY32 , "Int") } api_ReadFile(hFile, pBuffer, ReadSize, ByRef ReadedSize, pOverlapped) { Return DllCall("kernel32.dll\ReadFile" , "UInt", hFile , "UInt", pBuffer , "UInt", ReadSize , "UIntP", ReadedSize , "UInt", pOverlapped , "Int") } api_SendMessage(hWindow, Message, wParam, lParam) { Return DllCall("user32.dll\SendMessage" , "UInt", hWindow , "UInt", Message , "Int", wParam , "Int", lParam , "Int") } api_ShellExecute(hWindow, pVerb, pFileName, pParameters, pDirectory, ShowCmd) { Return DllCall("shell32.dll\ShellExecuteA" , "UInt", hWindow , "UInt", pVerb , "UInt", pFileName , "UInt", pParameters , "UInt", pDirectory , "Int", ShowCmd , "UInt") } api_timeBeginPeriod(uPeriod) { Return DllCall("winmm.dll\timeBeginPeriod" , "UInt", uPeriod , "UInt") } api_timeEndPeriod(uPeriod) { Return DllCall("winmm.dll\timeEndPeriod" , "UInt", uPeriod , "UInt") } api_timeGetTime() { Return DllCall("winmm.dll\timeGetTime" , "UInt") } api_WindowFromPoint(xpos, ypos) { Return DllCall("user32.dll\WindowFromPoint" , "Int", xpos , "Int", ypos , "UInt") } api_WriteFile(hFile, pBuffer, WriteSize, ByRef WrittenSize, pOverlapped) { Return DllCall("kernel32.dll\WriteFile" , "UInt", hFile , "UInt", pBuffer , "UInt", WriteSize , "UIntP", WrittenSize , "UInt", pOverlapped , "Int") }