[AutoHotKey Header] MD5.ahk

Posted by nopsled
2014.03.14 08:46 프로그래밍


 

MD5.ahk


HashFromAddr(pData, len, algid, key=0)

{

  hProv := size := hHash := hash := ""

  ptr := (A_PtrSize) ? "ptr" : "uint"

  aw := (A_IsUnicode) ? "W" : "A"

  if (DllCall("advapi32\CryptAcquireContext" aw, ptr "*", hProv, ptr, 0, ptr, 0, "uint", 1, "uint", 0xF0000000))

  {

    if (DllCall("advapi32\CryptCreateHash", ptr, hProv, "uint", algid, "uint", key, "uint", 0, ptr "*", hHash))

    {

      if (DllCall("advapi32\CryptHashData", ptr, hHash, ptr, pData, "uint", len, "uint", 0))

      {

        if (DllCall("advapi32\CryptGetHashParam", ptr, hHash, "uint", 2, ptr, 0, "uint*", size, "uint", 0))

        {

          VarSetCapacity(bhash, size, 0)

          DllCall("advapi32\CryptGetHashParam", ptr, hHash, "uint", 2, ptr, &bhash, "uint*", size, "uint", 0)

        }

      }

      DllCall("advapi32\CryptDestroyHash", ptr, hHash)

    }

    DllCall("advapi32\CryptReleaseContext", ptr, hProv, "uint", 0)

  }

  int := A_FormatInteger

  SetFormat, Integer, h

  Loop, % size

  {

    v := substr(NumGet(bhash, A_Index-1, "uchar") "", 3)

    while (strlen(v)<2)

      v := "0" v

    hash .= v

  }

  SetFormat, Integer, % int

  return hash

}

 

 

HashFromString(string, algid, key=0)

{

  len := strlen(string)

  if (A_IsUnicode)

  {

    VarSetCapacity(data, len)

    StrPut := "StrPut"

    %StrPut%(string, &data, len, "cp0")

    return HashFromAddr(&data, len, algid, key)

  }

  data := string

  return HashFromAddr(&data, len, algid, key)

}

 

MD5(string)

{

  return HashFromString(string, 0x8003)

}

 

 Description : MD5 암호화를 하기위한 AHK 헤더 스크립트 입니다.



[AutoHotKey Header] COM.ahk

Posted by nopsled
2014.03.14 08:26 프로그래밍


 

COM.ahk


 




스크립트가 매우 길므로 본문에 쓰진 않았습니다.






 Description : AHK_B, AHK_L에서 사용 할 수 있으며 Winhttp에 이용됩니다.

 대부분 "COM 라이브러리" 라고도 하며, L버전에서는 내장함수가 나왔으므로 잘 사용하진 않습니다.




[AutoHotKey Header] SendH.ahk

Posted by nopsled
2014.03.14 08:19 프로그래밍



SendH.ahk


SendH( sAnsiText )

{

    wStrLen:=DllCall("MultiByteToWideChar",uint,0, uint,0, str,sAnsiText  , uint,-1, str, 0, uint,0 )

    varSetCapacity(cu_WideText,wStrLen*2,0)

    DllCall("MultiByteToWideChar",uint,0, uint,0, str,sAnsiText  , uint,-1, str,cu_WideText, uint, wStrLen )

    nEventCount :=  wStrLen* 2 , VarSetCapacity( events, 28*nEventCount, 0 )

    ptrWCode:=&cu_WideText , p:=&events

    msgbox, % ptrwcode

    loop, % wStrLen-1 

    {

        code:=*ptrWCode|( *(ptrWCode+1)<<8 ),ptrWCode+=2

        p:=NumPut(4,NumPut(code,NumPut(1,p+0 )+2,0,"UShort")+0)+16

        p:=NumPut(6,NumPut(code,NumPut(1,p+0 )+2,0,"UShort")+0)+16

    }

    result := DllCall( "SendInput", "uint", nEventCount, "uint", &events, "int",28)

    if( ErrorLevel or result < nEventCount )

    {

        MsgBox, [SendInput] failed: EL = %ErrorLevel% ~ %result% of %nEventCount%

        return, false

    }

    return, true

}

Description : 한글을 Send 하기 위한 헤더파일 입니다.

비슷한 방식으로 ClipBoard에 변수를넣고 붙여넣기 하는 방법이 있습니다.