AutoHotkey 1.0À¸·Î ÀÛ¼ºµÈ ½ºÅ©¸³Æ®´Â ´ëºÎºÐ AutoHotkey 1.1 À§¿¡¼ ¾Æ¹« º¯°æ¾øÀÌ ½ÇÇàµË´Ï´Ù. ±×·¯³ª ¸î °¡Áö ±â´ÉÀº µÎ ¹öÀü »çÀÌÀÇ ¾î¶³ ¼ö ¾ø´Â Â÷ÀÌÁ¡ ¶§¹®¿¡ Á¦´ë·Î ÀÛµ¿ÇÏÁö ¾ÊÀ» ¼ö ÀÖ½À´Ï´Ù. °¡Àå ¹®Á¦°¡ µÇ´Â Â÷ÀÌÁ¡Àº DllCall °°Àº °í±Þ ±â´É¿¡¸¸ ¿µÇâÀ» ¹ÌÄ¡±â ¶§¹®¿¡, ´ëºÎºÐÀÇ »ç¿ëÀÚ´Â ½Å°æ¾µ ÇÊ¿ä°¡ ¾ø½À´Ï´Ù.
AutoHotkey 1.1Àº "AutoHotkey_L"À̶ó°íµµ ¾Ë·ÁÁ® Àִµ¥, ¹Ý¸é¿¡ AutoHotkey 1.0Àº ¿ªÀ¸·Î "AutoHotkey Basic"À̶ó´Â ¶óº§ÀÌ ºÙ¾ú½À´Ï´Ù. AutoHotkey_LÀÇ ¿¹Àü ¹öÀü Áß¿¡´Â 1.0.* ¹öÀü ¹øÈ£¸¦ »ç¿ëÇÕ´Ï´Ù. ±×·¡¼ ¸íÈ®ÇÏ°Ô Çϱâ À§ÇØ, ÀÌ ¹®¼´Â ¿ÀÅäÇÖÅ°ÀÇ µÎ ºÐ±â¸¦ ¹öÀü ¹øÈ£°¡ ¾Æ´Ï¶ó À̸§À¸·Î ÁöĪÇÕ´Ï´Ù.
ÁÖÀÇ: °¡Àå ÈçÇÑ ¹®Á¦´Â À¯´ÏÄÚµå ÅؽºÆ®¸¦ Áö¿øÇϵµ·Ï º¯°æÇÑ ¶§¹®Àε¥, ÀÌ´Â ±×³É ANSI ¹öÀüÀÇ AutoHotkey_L¸¦ »ç¿ëÇϸé ÇÇÇÒ ¼ö ÀÖ½À´Ï´Ù.
Å« Ãæ°Ý:
Áß°£ Ãæ°Ý:
x & y::
´Â x¸¦ ¶¿ ¶§ x::
¿Í x up::
À» ¸ðµÎ Ã˹߽Ãŵ´Ï´ÙÀÛÀº Ãæ°Ý:
AutoHotkey Basic¿¡¼ ¿ëÀεǾú´ø ¾î¶² ±¸¹® ¿¡·¯´Â ÀÌÁ¦ ´õ ÀÌ»ó AutoHotkey_L¿¡¼ ¿ë³³ÇÏÁö ¾Ê½À´Ï´Ù. ±×·± ¿¡·¯´Â ´ëºÎºÐ ½Äº°Çϱ⸸ ÇÏ¸é ½±°Ô ±³Á¤ÇÒ ¼ö ÀÖ½À´Ï´Ù. ´ÙÀ½ ¿¡·¯´Â ½ºÅ©¸³Æ®¸¦ AutoHotkey_L¿¡¼ ±âµ¿ÇÏÀÚ ¸¶ÀÚ Áï½Ã ŽÁöµË´Ï´Ù. ±³Á¤ÇØ¾ß ½ºÅ©¸³Æ®¸¦ ½ÇÇàÇÒ ¼ö ÀÖ½À´Ï´Ù:
MsgBox< foo
±×¸®°í If!foo
´Â ¿ë³³µÇÁö ¾Ê½À´Ï´Ù.Hotkey, IfSomething
¿¡¼ SomethingÀÌ ¹«È¿À̸ç, Çã¿ëµÇÁö ¾Ê½À´Ï´Ù.´Ù¸¥ ¾î¶² ±¸¹® ¿¡·¯´Â ½ºÅ©¸³Æ®°¡ ½ÇÇà ÁßÀÏ ¶§ ŽÁöµË´Ï´Ù. ¿¡·¯ ¸Þ½ÃÁö¸¦ ¸ÕÀú º¸¿©ÁØ ´ÙÀ½¿¡ ÇöÀç ¾²·¹µå¸¦ Á¾·áÇÕ´Ï´Ù:
¾î¶² ±¸¹® ¿¡·¯´Â ÇöÀç ŽÁöµÇÁö ¾ÊÁö¸¸, AutoHotkey_L¿¡ ¹®Á¦¸¦ ÀÏÀ¸Åµ´Ï´Ù:
(
°úÀÇ ÀÚµ¿-°áÇÕ(Auto-concat)Àº ´õ ¼±º°ÀûÀÌ µÇ¾ú½À´Ï´Ù. ±×·¡¼ 12(34)
¿Í °°ÀÌ ¹«È¿ÇÑ Ç¥Çö½ÄÀº ´õ ÀÌ»ó ÀÛµ¿ÇÏÁö ¾Ê½À´Ï´Ù.FileRead´Â º¸ÅëÀÇ °æ¿ì ÄÚµå ÆäÀÌÁö »çÀÌ¿¡ ÅؽºÆ®¸¦ º¯È¯ÇÕ´Ï´Ù. ±×·¯¹Ç·Î ºÎÆÐÇÑ ÀÌÁø µ¥ÀÌÅ͸¦ Ãâ·ÂÇÒ °¡´É¼ºÀÌ ÀÖ½À´Ï´Ù. À̸¦ ÇÇÇÏ·Á¸é *c
¿É¼ÇÀ» Ãß°¡Çϰųª ´ë½Å¿¡ FileOpenÀ» »ç¿ëÇϽʽÿÀ.
[
, ]
±×¸®°í ?
´Â Ç¥Çö½Ä¿¡ »ç¿ëÀÌ ¿¹¾àµÇ¾î ÀÖ½À´Ï´Ù. ±×·¡¼ ´õ ÀÌ»ó º¯¼ö À̸§À¸·Î À¯È¿ÇÏÁö ¾Ê½À´Ï´Ù. °á·ÐÀûÀ¸·Î, ?
´Â (»ïÁø ¿¬»ê¿¡ »ç¿ëµÊ) ´õ ÀÌ»ó ¾çÂÊ¿¡ ½ºÆäÀ̽º°¡ ¾ø¾îµµ µË´Ï´Ù. °´Ã¼ ±¸¹®À» ÂüÁ¶ÇϽʽÿÀ.
¿¡·¯´Â ÀÚµ¿À¸·Î ŽÁöµÉ ¼öµµ ÀÖ°í ¾Æ´Ò ¼öµµ ÀÖ½À´Ï´Ù:
Array%n%
°ú °°ÀÌ n¿¡ À§ÀÇ ¹®ÀÚÁß Çϳª°¡ ´ã°Ü ÀÖÀ¸¸é), ½ºÅ©¸³Æ®°¡ ½ÇÇàµÇ´Ù°¡, ÀÌÁß-ÂüÁ¶°¡ Æò°¡µÉ ¶§ ¿¡·¯ ¸Þ½ÃÁö°¡ ³ªÅ¸³³´Ï´Ù.Transform ÇÏÀ§-¸í·É¾î Áß ÀϺδ À¯´ÏÄÚµå ¹öÀüÀÇ AutoHotkey_L¿¡¼ º¯°æµÇ°Å³ª »ç¿ëÇÒ ¼ö ¾ø½À´Ï´Ù:
AutoHotkey_L°¡ ½ºÅ©¸³Æ®¸¦ ÁöÁ¤ÇÏÁö ¾Ê°í ±âµ¿Çϸé, .ini ÆÄÀÏ ´ë½Å¿¡ .ahk ÆÄÀÏÀÌ ÀûÀçµË´Ï´Ù. ÀÌ ÆÄÀÏÀÇ À̸§Àº ÇöÀç ½ÇÇàÆÄÀÏÀÇ ÆÄÀÏÀ̸§¿¡ µû¶ó ´Ù¸¨´Ï´Ù. ´õ ÀÚ¼¼ÇÑ °ÍÀº ½ºÅ©¸³Æ®¿¡ ¸í·É¾î ÁÙ ¸Å°³º¯¼ö¸¦ °Ç³×±â¸¦ ÂüÁ¶ÇϽʽÿÀ.
´ë¹®ÀÚ H°¡ »ç¿ëµÇ¸é, ½ÊÀ°Áø¼ö A-Fµµ ´ë¹®ÀÚ°¡ µË´Ï´Ù. AutoHotkey BasicÀº ¾ðÁ¦³ª ¼Ò¹®ÀÚ¸¦ »ç¿ëÇÕ´Ï´Ù. SetFormatÀ» ÂüÁ¶ÇϽʽÿÀ.
´ÙÀ½ ¸í·É¾î´Â ÀÌÁ¦ A_LastError¸¦ ¼³Á¤ÇØ µð¹ö±ëÀ» µ½½À´Ï´Ù: FileAppend, FileRead, FileReadLine, FileDelete, FileCopy, FileMove, FileGetAttrib/Time/Size/Version, FileSetAttrib/Time, FileCreateDir, RegRead, RegWrite, RegDelete. ÀÌ ¸í·É¾î¸¦ »ç¿ëÇϸé A_LastErrorÀÇ ÀÌÀü °ªÀÌ µ¤¾î ¾º¿©Áý´Ï´Ù.
MsgBoxÀÇ ¶È¶ÈÇÑ ½°Ç¥ 󸮰¡ ´Ù¸¥ ¸ðµç ¸í·É¾î¿Í ÀÏ°ü¼ºÀÌ ÀÖ°Ô ±×¸®°í À¯¿¬ÇÏ°Ô °³¼±µÇ¾ú½À´Ï´ô. ´ëºÎºÐÀÇ °æ¿ì, MsgBox´Â ÀǵµÇÑ ´ë·Î Àß ÀÛµ¿ÇÕ´Ï´Ù. ¾î¶² °æ¿ì´Â ½ºÅ©¸³Æ®°¡ ¿¹ÀüÀÇ ±â¹¦ÇÑ ÇàÀ§¿¡ ÀÇÁ¸ÇÏ´Â °æ¿ì ÇàÀ§¿¡ º¯È°¡ º¸ÀÏ ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¸é:
; ´ÙÀ½Àº ÀÌÁ¦ Ç¥Çö½Ä (Options) ´ÙÀ½¿¡ ÅؽºÆ® (Title)·Î ¹ø¿ªµË´Ï´Ù. ; ¿©·¯ ºÎ-Ç¥Çö½ÄÀ» °¡Áø ´ÜÀÏ Ç¥Çö½Ä (Text) À¸·Î ¹ø¿ªµÇÁö ¾Ê½À´Ï´Ù : MsgBox % x, y ; ¹Ý°ýÈ£¸¦ Ãß°¡ÇÏ¸é ¿¹ÀüÀÇ ¹ø¿ªÀ» °Á¦ÇÒ ¼ö ÀÖ½À´Ï´Ù: MsgBox % (x, y) ; ´ÙÀ½Àº ÀÌÁ¦ ÅؽºÆ® "0, Title" ´ë½Å¿¡ ºó ´ëÈ»óÀÚ¸¦ º¸¿©ÁÝ´Ï´Ù: MsgBox 0, Title ; ´ÙÀ½Àº AutoHotkey_L ±×¸®°í AutoHotkey Basic¿¡¼ ¸ðµÎ ¿¹»ó´ë·Î ÇàÀ§ÇÕ´Ï´Ù: MsgBox 0, Title, % "" ; ºó ´ëÈ»óÀÚ¸¦ º¸¿©ÁÝ´Ï´Ù. MsgBox 0`, Title ; ÅؽºÆ® "0, Title"À» º¸¿©ÁÝ´Ï´Ù. ; ´ÙÀ½Àº ÀÌÁ¦ ÅؽºÆ® ", Title" ´ë½Å¿¡ ºó ´ëÈ»óÀÚ¸¦ º¸¿©ÁÝ´Ï´Ù: MsgBox,, Title
+Owner ¿É¼ÇÀ» Gui¿¡ Àû¿ëÇϸé WS_CHILD ½ºÅ¸ÀÏÀÌ Á¦°ÅµÇ°í WS_POPUP ½ºÅ¸ÀÏÀÌ ¼³Á¤µË´Ï´Ù. ÀÌ ¶§¹®¿¡ ½ºÅ¸ÀÏÀ» ¼³Á¤ÇÑ ´ÙÀ½¿¡ +Owner
¸¦ »ç¿ëÇÏ¿© GuiÀÇ ºÎ¸ð âÀ» ¼³Á¤ÇÑ ½ºÅ©¸³Æ®´Â ±úÁú ¼ö ÀÖ½À´Ï´Ù.
DPI ½ºÄÉÀϸµÀº ±âº»ÀûÀ¸·Î ½ºÅ©¸³Æ® GUI¿¡ ÄÑÁý´Ï´Ù. ÀÌ ¶§¹®¿¡ DPI ¼³Á¤ÀÌ 96 (100%)ÀÌ ¾Æ´Ï¸é ½ºÅ©¸³Æ®¿¡ ¿µÇâÀ» ¹ÌĨ´Ï´Ù. À̸¦ ²ô·Á¸é, Gui -DPIScale
¸¦ »ç¿ëÇϽʽÿÀ.
SoundSet, SoundGet, SoundSetWaveVolume ±×¸®°í SoundGetWaveVolume Windows Vista ÀÌÈÄ¿¡ °³¼±µÇ¾ú½À´Ï´Ù. ÀüÇüÀûÀÎ ÇàÀ§ÀÇ º¯È·Î:
v1.1.14 ºÎÅÍ, Æ¿µå Á¢µÎ ½Éº¼Àº ¸ÂÃã Á¶ÇÕ¿¡ ¼ö½Ä Å°·Î »ç¿ëµÉ ¶§ Å°°¡ ÀÛµ¿ÇÏ´Â ¹æ½Ä¿¡ ¿µÇâÀ» ¹ÌĨ´Ï´Ù.
Æ¿µå Á¢µÎ ½Éº¼ÀÌ »ç¿ëµÇ´Â °æ¿ì¸¦ Á¦¿ÜÇÏ°í, Å°-´Ù¿î°ú Å°-¾÷ ÇÖÅ°°¡ ¸ÂÃã ¼ö½Ä Å°·Î Á¤ÀǵǾî ÀÖ´Ù¸é, Å°¸¦ ¶¿ ¶§ µÑ ¸ðµÎ ÃË¹ß µË´Ï´Ù. ¿¹¸¦ µé¾î, x & y::
À̸é x¸¦ ¶¿ ¶§ x::
¿Í x up::
°¡ ¸ðµÎ ÃË¹ß µË´Ï´Ù. ¿¹Àü¿¡´Â x::
°¡ ÃË¹ß µÇÁö ¾Ê¾Ò½À´Ï´Ù.
If var is type´Â ½Ã½ºÅÛ ·ÎÄÉÀÏÀ» ¹«½ÃÇÕ´Ï´Ù. ´Ü, StringCaseSense, LocaleÀÌ »ç¿ëµÇ¾ú´Ù¸é ¿¹¿ÜÀÔ´Ï´Ù.
GroupActivate´Â È°¼ºÈ ÇÒ Ã¢À» ¹ß°ßÇÏÁö ¸øÇϸé ErrorLevel¿¡ 1À» ¼³Á¤ÇÕ´Ï´Ù, ±×·¸Áö ¾ÊÀ¸¸é 0À» ¼³Á¤ÇÕ´Ï´Ù. ÀÌÀü¿¡´Â ErrorLevelÀ» º¯°æÇÏÁö ¾Ê°í ±×´ë·Î µÎ¾ú½À´Ï´Ù.
GroupAddÀÇ Label ¸Å°³º¯¼ö´Â â ±×·ì¿¡ ÀüüÀûÀ¸·Î Àû¿ëµË´Ï´Ù. ±×·ì ¾ÈÀÇ Æ¯Á¤ â ±Ô°Ý Çϳª¿¡¸¸ Àû¿ëµÇÁö ¾Ê½À´Ï´Ù. ÀÌ º¯°æ¿¡ °üÇÑ Åä·ÐÀÌ Æ÷·³¿¡ ÀÖ½À´Ï´Ù. ±×·¸Áö¸¸, ÀÌ ¸Å°³º¯¼ö¸¦ »ç¿ëÇÏ´Â °ÍÀº Ãßõ ÇÏÁö ¾Ê½À´Ï´Ù; ´ë½Å¿¡ GroupActivate¸¦ È£ÃâÇÑ ÈÄ¿¡ ErrorLevelÀ» Á¡°ËÇϽʽÿÀ.
AutoHotkey_LÀº Run°ú RunWait ¸í·É¾î°¡ ¸ñÇ¥(Target) ¸Å°³º¯¼ö¸¦ ¹ø¿ªÇÏ´Â ¹æ½ÄÀÌ ¾à°£ °³¼±µÇ¾ú½À´Ï´Ù. ÀÌ ¶§¹®¿¡ ¾ÆÁÖ Èñ±ÍÇÑ °æ¿ìÀ̱â´Â ÇÏÁö¸¸, ¿¹Àü¿¡´Â ÀÛµ¿ÇÏÁö ¾Ê´ø °ÍµéÀÌ ÀÛµ¿ÇÏ°Ô µÇ¾î AutoHotkey Basic¿¡¼ ÀÌ¹Ì Àß ÀÛµ¿ÇÏ´Â ½ºÅ©¸³Æ®¿¡ ¿µÇâÀ» ¹ÌÄ¥ ¼ö ÀÖ½À´Ï´Ù. »õ·Î¿î ÇàÀ§´Â ´ÙÀ½°ú °°½À´Ï´Ù:
Loop Read ±×¸®°í FileReadLine´Â ´õ ÀÌ»ó ¹®ÀÚ Control-Z (0x1A)¸¦ ÆÄÀÏ ³¡ Ç¥½ÄÀ¸·Î ÀÌÇØÇÏÁö ¾Ê½À´Ï´Ù. Control-Z´Â ¸ðµÎ, ÆÄÀÏ ¸Ç ³¡¿¡ ¿À´õ¶óµµ, ±×´ë·Î ÀûÀçµË´Ï´Ù. FileRead´Â ÀÌ¹Ì ÀÌ ¹®ÀÚ¸¦ ¹«½ÃÇÕ´Ï´Ù. ±×·¡¼ ÀÌ ¹®Á¦¿¡ ¿µÇâÀ» ¹ÞÁö ¾Ê½À´Ï´Ù.
½ºÅ©¸³Æ®¸¦ ½ÇÇàÇÏ´Â µ¥ »ç¿ëµÈ EXE ÆÄÀÏÀÇ Æ¯¼º¿¡ ȣȯ ¸ðµå°¡ Windows 95, 98/ME ¶Ç´Â NT4·Î ¼³Á¤µÇ¾ú´Ù¸é,
±× ½ºÅ©¸³Æ®´Â ¿Ã¹Ù¸£°Ô ÀÛµ¿ÇÏÁö ¸øÇÕ´Ï´Ù. ¿Ö³ÄÇϸé ȣȯ ¸ðµå ¶§¹®¿¡ ƯÁ¤ ¹öÀüÀÇ Windows°¡ ¾îÇø®ÄÉÀ̼ǿ¡ º¸°íµÇÁö¸¸, AutoHotkey_LÀº ÀÌ·± ¹öÀüÀ» Áö¿øÇÏÁö ¾Ê±â ¶§¹®ÀÔ´Ï´Ù. ¿¹¸¦ µé¾î, ȣȯ ¸ðµå¸¦ Windows 95 or 98/ME¿¡ ¼³Á¤Çϸé MsgBox %A_OSVersion%
´Â WIN_NT4
¶ó°í º¸°íÇÕ´Ï´Ù.
A_IsCompiled´Â ½ºÅ©¸³Æ®°¡ ÄÄÆÄÀϵÇÁö ¾Ê¾Ò´Ù¸é ºó ¹®ÀÚ¿·Î Á¤Àǵ˴ϴÙ. ÀÌÀü¿¡´Â Á¤ÀǵÇÁö ¾ÊÀº ä ±×´ë·Î µÎ¾ú½À´Ï´Ù. ±× ¶§¹®¿¡ ½ºÅ©¸³Æ®°¡ ÄÄÆÄÀϵÇÁö ¾Ê¾ÒÀ½¿¡µµ A_IsCompiled := 1
¿Í °°Àº ÇÒ´çÀÌ À¯È¿Çß¾ú½À´Ï´Ù. ÀÌÁ¦´Â ¸ðµç °æ¿ì¿¡ Àбâ Àü¿ë ³»Àå º¯¼ö·Î Ãë±ÞµË´Ï´Ù.
`t
¿Í `
°°Àº ÇǽŠ°ø¹é¹®ÀÚ´Â ´õ ÀÌ»ó °¢ ÀÎÀÚÀÇ ¾Õ µÚ¿¡¼ Á¦°ÅµÇÁö ¾Ê½À´Ï´Ù. ¿¹¸¦ µé¾î, StringReplace s, s, `t
´Â ÀÌÁ¦ À¯È¿ÇÏ¸ç ¸ðµç ÅÇ ¹®ÀÚ¸¦ s·ÎºÎÅÍ Á¦°ÅÇÕ´Ï´Ù.
ÅؽºÆ® °ªÀº Á¾Á¾ ¹®ÀÚ¿(string)À̶ó°í ºÎ¸¨´Ï´Ù. °¢ ÅؽºÆ®ÀÇ °ªÀÌ ¹®ÀÚ¿ÀÇ ¿¬¼Ó ¶Ç´Â ÁÙÁö¾î(string) ÀúÀåµÇ¾î Àֱ⠶§¹®ÀÔ´Ï´Ù. °¢ ¹®ÀÚÀÇ ¼ýÄ¡ ¹®ÀÚ ÄÚµå¿Í Å©±â (¹ÙÀÌÆ® ´ÜÀ§)´Â ¾î´À ¹öÀüÀÇ AutoHotkey¸¦ »ç¿ëÇÏ°í Àִ°¡¿¡ ´Þ·Á ÀÖ½À´Ï´Ù: Unicode ¶Ç´Â ANSI. ÀÌ·± ¼¼ºÎ »çÇ×Àº ´ÙÀ½°ú °°Àº ÀÏÀ» ÇÏ·Á´Â ½ºÅ©¸³Æ®¿¡ ÀüÇüÀûÀ¸·Î Áß¿äÇÕ´Ï´Ù:
ÇÑ °¡Áö Çü½Ä¸¸ ¿°µÎ¿¡ µÎ°í ¼³°èµÈ ½ºÅ©¸³Æ®´Â Á¾Á¾ ¾û¶×ÇÑ ¹öÀüÀÇ AutoHotkey·Î ½ÇÇàÇÒ ¶§ ¹®Á¦¿¡ ºÀÂøÇÕ´Ï´Ù. ¿¹¸¦ µé¸é, ¾î¶² ½ºÅ©¸³Æ®°¡ AutoHotkey Basic¿ëÀ¸·Î ÀÛ¼ºµÇ¾ú´Ù¸é ANSI ¹öÀüÀÇ AutoHotkey_L¿¡¼´Â Àß ÀÛµ¿ÇÏÁö¸¸ À¯´ÏÄÚµå ¹öÀü¿¡¼´Â ½ÇÆÐÇÕ´Ï´Ù. ¾î´À ¹öÀüÀ» »ç¿ëÇÏ°í ÀÖ´ÂÁö Àß ¸ð¸£°Ú´Ù¸é, ´ÙÀ½ ½ºÅ©¸³Æ®¸¦ ½ÇÇàÇØ º¸½Ê½Ã¿À:
MsgBox % A_IsUnicode ? "Unicode" : "ANSI"
ANSI: °¢ ¹®ÀÚ´Â ÇÑ ¹ÙÀÌÆ® (8 ºñÆ®)ÀÔ´Ï´Ù. 127À» ³Ñ´Â ¹®ÀÚ ÄÚµå´Â ½Ã½ºÅÛÀÇ ¾ð¾î ¼³Á¤¿¡ µû¶ó ´Þ¶óÁý´Ï´Ù.
Unicode: °¢ ¹®ÀÚ´Â µÎ ¹ÙÀÌÆ® (16 ºñÆ®)ÀÔ´Ï´Ù. ¹®ÀÚ ÄÚµå´Â UTF-16 Çü½ÄÀ¸·Î Á¤Àǵ˴ϴÙ.
Àṉ̀¸Á¶ ÁÖÀÇ: ±â¼úÀûÀ¸·Î, ¾î¶² À¯´ÏÄÚµå ¹®ÀÚ´Â µÎ °³ÀÇ 16-ºñÆ® ÄÚµå ´ÜÀ§·Î Ç¥ÇöµË´Ï´Ù. ÇÕÃļ "´ë¸® ½Ö(surrogate pair)"¶ó°í ºÎ¸¨´Ï´Ù. ºñ½ÁÇÏ°Ô, ¾î¶² ANSI ÄÚµå ÆäÀÌÁö´Â (º¸Åë DBCS(Double Byte Character Sets)¶ó°í ºÎ¸§) µÎ ¹ÙÀÌÆ® ¹®ÀÚ¸¦ ´ã°í ÀÖ½À´Ï´Ù. ±×·¸Áö¸¸, ½Ç¿ëÀûÀÎ ÀÌÀ¯·Î, À̰͵éÀ» °ÅÀÇ ¾ðÁ¦³ª µÎ °³ÀÇ °³º° ´ÜÀ§·Î Ãë±ÞÇÕ´Ï´Ù (´Ü¼øÇÏ°Ô Çϱâ À§ÇØ ±×³É "¹®ÀÚ(characters)"¶ó°í ºÎ¸¨´Ï´Ù).
VarSetCapacity´Â º¯¼öÀÇ °¡¿ë ´É·ÂÀ» ¹ÙÀÌÆ® ´ÜÀ§·Î ¼³Á¤ÇÕ´Ï´Ù. º¯¼öÀÇ °¡¿ë´É·ÂÀ» ¹®ÀÚÀÇ °³¼ö¿¡ ±â¹ÝÇÏ¿© ¼³Á¤ÇÏ·Á¸é, ¹®ÀÚÀÇ Å©±â¸¦ ¹Ýµå½Ã °í·ÁÇØ¾ß ÇÕ´Ï´Ù. ¿¹¸¦ µé¾î:
VarSetCapacity(ansi_var, capacity_in_chars) VarSetCapacity(unicode_var, capacity_in_chars * 2) VarSetCapacity(native_var, capacity_in_chars * (A_IsUnicode ? 2 : 1)) VarSetCapacity(native_var, t_size(capacity_in_chars)) ; ¾Æ·¡ ÂüÁ¶
´ÙÀ½Àº VarSetCapacityÀÇ µÎ °¡Áö ÁÖ¿ä »ç¿ë¹ýÀÔ´Ï´Ù:
VarSetCapacity(var, 1000)
´Â 1000 ¹ÙÀÌÆ®¸¦ Çã¿ëÇÕ´Ï´Ù. ÀÌ°ÍÀº À¯´ÏÄÚµå ¹öÀüÀÇ AutoHotkey_L¿¡¼´Â 500 ¹®ÀÚ¿¡ ºÒ°úÇÕ´Ï´Ù. ÀÌ·¸°Ô ÇÏ¸é ¼öÇ༺´É¿¡ ¿µÇâÀ» ¹ÌÄ¥ ¼ö ÀÖÁö¸¸, ½ºÅ©¸³Æ®´Â ¿©ÀüÈ÷ ¿Ã¹Ù¸£°Ô ÀÛµ¿ÇÕ´Ï´Ù."Str" À¯ÇüÀÌ »ç¿ëµÉ ¶§, ÇöÀç ºôµåÀÇ °íÀ¯ À¯ÇüÀÇ ¹®ÀÚ¿À̶ó´Â ¶æÀÔ´Ï´Ù. ¾î¶² ÇÔ¼ö´Â ƯÁ¤ÇÑ ÇüÅÂÀÇ ¹®ÀÚ¿À» ¿ä±¸Çϰųª µ¹·ÁÁֱ⠶§¹®¿¡, ´ÙÀ½ÀÇ ¹®ÀÚ¿ À¯ÇüÀ» »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù:
¹®ÀÚ Å©±â | C / Win32 Types | ÀÎÄÚµù | |
---|---|---|---|
WStr | 16-ºñÆ® | wchar_t*, WCHAR*, LPWSTR, LPCWSTR | UTF-16 |
AStr | 8-ºñÆ® | char*, CHAR*, LPSTR, LPCSTR | ANSI (½Ã½ºÅÛ ±âº» ANSI ÄÚµå ÆäÀÌÁö) |
Str | -- | TCHAR*, LPTSTR, LPCTSTR | À¯´ÏÄÚµå ºôµåÀÇ WStr ±×¸®°í ANSI ºôµåÀÇ AStr°ú µ¿µî. |
"Str" ¶Ç´Â ÇöÀç ºôµå¿¡ ´ëÇÏ¿© ±×¿Í µ¿µîÇÑ À¯ÇüÀÌ ¸Å°³º¯¼ö·Î »ç¿ëµÇ¸é, ±× ¹®ÀÚ¿ ¶Ç´Â º¯¼öÀÇ ÁÖ¼Ò°¡ ÇÔ¼ö¿¡ °Ç³×Áý´Ï´Ù. ±×·¸Áö ¾ÊÀ¸¸é ´ë½Å¿¡ ¹®ÀÚ¿ÀÇ Àӽà »çº»ÀÌ ¿øÇÏ´Â Æ÷¸ËÀ¸·Î »ý¼ºµÇ°í °Ç³×Áý´Ï´Ù. ÀϹÝÀûÀ¸·Î, "AStr" ±×¸®°í "WStr"Àº ÇÔ¼ö°¡ ±× ¸Å°³º¯¼ö¿¡ º¯¼ö¸¦ ¾µ ¶§ »ç¿ëÇÏ¸é ¾È µË´Ï´Ù.
ÁÖÀÇ: "AStr" ±×¸®°í "WStr"Àº ¸Å°³º¯¼ö¿¡ ´ëÇÏ¿© ±×¸®°í ±× ÇÔ¼öÀÇ ¹Ýȯ °ª¿¡ ´ëÇÏ¿© ¶È °°ÀÌ À¯È¿ÇÕ´Ï´Ù.
ÀϹÝÀûÀ¸·Î, ½ºÅ©¸³Æ®°¡ ¹®ÀÚ¿À» ¸Å°³º¯¼ö·Î ¹Þ´Â ÇÔ¼ö¸¦ DllCall¸¦ ÅëÇÏ¿© È£ÃâÇϸé, ´ÙÀ½ Á¢±Ù¹ý Áß Çϳª¸¦ ÃëÇØ¾ß ÇÕ´Ï´Ù:
DllCall("DeleteFile", "Ptr", &filename) DllCall("DeleteFile", "Str", filename)
´ÙÀ½ ¿¹Á¦¿¡¼, &filename
Àº ¹®ÀÚ¿ÀÇ ÁÖ¼Ò¸¦ Á¤È®ÇÏ°Ô ÀÖ´Â ±×´ë·Î °Ç³Ü´Ï´Ù. ±×·¡¼ ÇÔ¼ö´Â ¹®ÀÚ¿À» "Str" À¯Çü°ú °°Àº Çü½ÄÀ̶ó°í ¿¹»óÇØ¾ß ÇÕ´Ï´Ù. AutoHotkey Basic¿¡¼ "UInt"¸¦ "Ptr" ´ë½Å¿¡ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ±×·¯³ª °á°ú ÄÚµå´Â 64-ºñÆ®¿Í ȣȯµÇÁö ¾Ê½À´Ï´Ù.
ÁÖÀÇ: ÇÔ¼ö¸¦ Á¤È®ÇÏ°Ô ÁöÁ¤µÈ ´ë·Î ¹ß°ßÇÒ ¼ö ¾øÀ¸¸é, AutoHotkey_LÀº ¾î´À DLLÀÌ ÁöÁ¤µÇ¾î Àִ°¡¿¡ »ó°ü ¾øÀÌ "A" ¶Ç´Â "W" Á¢µÎ»ç¸¦ µ¡ºÙÀÔ´Ï´Ù. ±×·¸Áö¸¸, AutoHotkey BasicÀº User32.dll, Kernel32.dll, ComCtl32.dll, ¶Ç´Â Gdi32.dll¿¡ ÀÖ´Â ÇÔ¼ö¿¡ ´ëÇؼ¸¸ "A" Á¢µÎ»ç¸¦ ºÙÀÔ´Ï´Ù.
DllCall("DeleteFileA", "AStr", filename) DllCall("DeleteFileW", "WStr", filename)
NumPutÀ̳ª NumGetÀÌ ¹®ÀÚ¿¿¡ »ç¿ëµÉ ¶§, ÁÖ¾îÁø À¯ÇüÀÇ ¹®ÀÚ¿¿¡ ´ëÇÏ¿© ¿ÀÇÁ¼Â°ú À¯ÇüÀÌ Á¤È®ÇØ¾ß ÇÕ´Ï´Ù. ´ÙÀ½À» ÁöħÀ¸·Î »ïÀ¸½Ê½Ã¿À:
; 8-bit/ANSI strings: size_of_char=1 type_of_char="Char" ; 16-bit/UTF-16 strings: size_of_char=2 type_of_char="UShort" nth_char := NumGet(var, (n-1)*size_of_char, type_of_char) NumPut(nth_char, var, (n-1)*size_of_char, type_of_char)
var
¿¡ À½¼ö ÇüÅÂÀÇ ¹®ÀÚ¿ÀÌ µé¾î ÀÖ´Ù¸é, ÀûÀýÇÑ °ªÀº A_IsUnicode
¿¡ ±â¹ÝÇÏ¿© °áÁ¤ÇÒ ¼ö ÀÖ½À´Ï´Ù:
nth_char := NumGet(var, t_size(n-1), t_char()) NumPut(nth_char, var, t_size(n-1), t_char()) ; Æí¸®¼º°ú ¸í·á¼ºÀ» À§ÇØ ÇÔ¼ö¸¦ Á¤ÀÇÇÕ´Ï´Ù: t_char() { return A_IsUnicode ? "UShort" : "Char" } t_size(char_count=1) { return A_IsUnicode ? char_count*2 : char_count }
Æ÷ÀÎÅÍ Å©±â´Â 32-ºñÆ® ºôµå¿¡ ´ëÇÏ¿© 4 ¹ÙÀÌÆ® (AutoHotkey Basic Æ÷ÇÔ) 64-ºñÆ® ºôµå¿¡ ´ëÇÏ¿© 8 ¹ÙÀÌÆ®ÀÔ´Ï´Ù. ±¸Á¶Ã¼³ª DllCallÀ» »ç¿ëÇÏ´Â ½ºÅ©¸³Æ®´Â µÎ Ç÷§Æû¿¡¼ ¸ðµÎ ¿Ã¹Ù¸£°Ô ÀÛµ¿ÇÏ·Á¸é ÀÌ »ç½ÇÀ» °í·ÁÇÒ ÇÊ¿ä°¡ ÀÖ½À´Ï´Ù. ¿µÇâÀ» ¹Þ´Â ±¸Ã¼ÀûÀÎ ¿µ¿ªÀº ´ÙÀ½°ú °°½À´Ï´Ù:
Å©±â¿Í ¿ÀÇÁ¼Â °è»êÀº A_PtrSizeÀ» »ç¿ëÇϽʽÿÀ. DllCall, NumPut ±×¸®°í NumGet¿¡´Â ÀûÀýÇÏ°Ô Ptr À¯ÇüÀ» »ç¿ëÇϽʽÿÀ.
ÇʵåÀÇ ¿ÀÇÁ¼ÂÀº º¸Åë ±× ¾Õ¿¡ ÀÖ´Â ¸ðµç ÇʵåÀÇ Àüü Å©±âÀÓÀ» ±â¾ïÇϽʽÿÀ. ¶Ç Çڵ鵵 (HWND¿Í HBITMAP °°Àº À¯ÇüÀ» Æ÷ÇÔÇÏ¿©) º»ÁúÀûÀ¸·Î Æ÷ÀÎÅÍ-À¯ÇüÀÓÀ» ¸í½ÉÇϽʽÿÀ.
/* typedef struct _PROCESS_INFORMATION { HANDLE hProcess; // Ptr HANDLE hThread; DWORD dwProcessId; // UInt (4 bytes) DWORD dwThreadId; } PROCESS_INFORMATION, *LPPROCESS_INFORMATION; */ VarSetCapacity(pi, A_PtrSize*2 + 8) ; Ptr + Ptr + UInt + UInt DllCall("CreateProcess", <omitted for brevity>, "Ptr", &pi, <omitted>) hProcess := NumGet(pi, 0) ; Defaults to "Ptr". hThread := NumGet(pi, A_PtrSize) ; dwProcessId := NumGet(pi, A_PtrSize*2, "UInt") dwProcessId := NumGet(pi, A_PtrSize*2 + 4, "UInt")