오토핫키 커뮤니티

조회 수 4816 추천 27 댓글 133

https://i.imgur.com/65Y7uuG.png

시작하기 전에


1. FileInstall 명령어를 아셔야합니다. 여기를 클릭하시면 명령어 설명으로 이동합니다

2. DllCall 명령어를 아셔야합니다. 여기를 클릭하시면 명령어 설명으로 이동합니다

3. 외부 DLL파일이 필요합니다. 여기를 클릭해 다운로드페이지로 이동합니다


가상화 방법


bxsdk32.dll 파일을 소스코드파일과 동일한 경로에 위치시키세요.

특정 폴더를 가상화시키기 위한 코드는 아래와 같습니다.


hModule := DllCall("LoadLibrary", str, A_ScriptDir "\bxsdk32.dll") ; DLL파일을 불러온다
DllCall("bxsdk32\BoxedAppSDK_Init") ; DLL파일을 시작한다
DllCall("bxsdk32\BoxedAppSDK_CreateVirtualDirectoryA", AStr, 폴더경로, Int, 0) ; 폴더경로 를 가상화한다


가상화를 종료하고, DLL파일을 닫기 위한 코드는 아래와 같습니다.


DllCall("bxsdk32\BoxedAppSDK_Exit") ; 가상화를 종료한다
DllCall("FreeLibrary", "UInt", hModule) ; DLL파일을 닫는다


원본 블로그 글 : http://me2.do/IMUoQSm2


  • 리체 2015.02.09 13:04

    @예지력1


    감사합니다.

    멀티스레딩에 대한 포스팅 좀 부탁드려도 될까요?

    해외 포럼에서 간간히 보고 있긴 한데, 어렵고 영어도 딸리고 해서 힘드네요;

  • profile
    예지력1 2015.02.09 13:58
    오토핫키 베이직과 오토핫키L은 기본적으로 멀티스레딩을 지원하지않아서, 오토핫키 H버전을 이용해야합니다,
    ahk.dll 를 사용하고요. http://www.autohotkey.net/~HotKeyIt/AutoHotkey/files/AutoHotkey-txt.html

    아래 코드는 '스크립트파일명'이라는 오토핫키 스크립트를 하나의 스레드로 실행하는 예제입니다
    AhkDllPath := A_ScriptDir "\AutoHotkey.dll"
    hModule := DllCall("LoadLibrary","Str",AhkDllPath)
    DllCall(AhkDllPath "\ahkdll","Str","스크립트파일명.ahk","Str","","Str","","Cdecl UPTR")
    MsgBox, End main thread
    DllCall("FreeLibrary","PTR",hModule)

    시간이 나면 제대로 글로 정리해서 올려보겠습니다.. 현재 제작중인 프로젝트가 있어 지금 당장은 힘들겠네요 ㅜ
  • 리체 2015.02.09 14:30
    감사합니다. 기대하고 있겠습니다.
  • profile
    외치기 2015.02.09 13:06

    이 가상화에 응용이나 활용 예제 하나정도만 추가 해 주세요.

  • profile
    예지력1 2015.02.09 14:01
    hModule := DllCall("LoadLibrary", str, A_ScriptDir "\bxsdk32.dll") ; DLL파일을 불러온다
    DllCall("bxsdk32\BoxedAppSDK_Init") ; DLL파일을 시작한다
    DllCall("bxsdk32\BoxedAppSDK_CreateVirtualDirectoryA", AStr, A_Temp, Int, 0) ; 윈도우 임시폴더를 가상화
    FileInstall, test.txt, %A_Temp%\test.txt, 1 ; 임시폴더에 test.txt 파일을 설치
    Run, %A_Temp%\test.txt ; 임시폴더의 test.txt 파일 실행
    return

    실제로 윈도우임시폴더에 가보면 test.txt를 찾아볼수없습니다.
  • profile
    외치기 2015.02.09 14:23
    오 이미지 파일 보호할 때 좋을거같아요.
  • profile
    예지력1 2015.02.09 14:28
    주의하실점은, 경로를 가상화하기때문에
    dll파일을 닫기이전에는 경로는 항상 가상상태를 유지하고있는겁니다.
    따라서, 바탕화면과 같이 사용자가 자주쓸 경로를 가상화시키는것은 위험하겠죠? ㅋㅋ
  • profile
    외치기 2015.02.09 15:08
    아 그점도 여쭤보고싶었어요.
    위와같이 임시폴더를 가상화 시키면 충돌이나 그런 문제사항은 없는지요.
  • profile
    예지력1 2015.02.09 22:21
    아뇨, 문제없습니다 괜찮아요~
  • profile
    테스하자 2015.03.03 15:16
    예제 테스트 해봤는데 안되네요..
    다운받은 dll안에 예제로 테스트해보면 되는데..
    외부 그러니까 윈도우 내에선 인식을 못하고 오핫키 내에서만 읽을 수 있네요?
  • profile
    예지력1 2015.03.03 22:54
    오토핫키가 핸들을 열었으니까요!
  • profile
    파더 2015.02.10 00:39

    왜 이런 좋은글에.. 추천이없는것이지... 예지력님이나 외치기님 모바게님 자료들은 항상 알찬데..


    추천이 부족하네.. 고생의 노력이 보인다면 추천을 합시다.. 그게 매너입니다..?

  • Hangoon 2015.02.11 11:22

    너무 좋은 기법과 응용 감사합니다 ^^

  • 베스트yj 2015.02.14 04:51

    좋은정보 감사합니다.

  • profile
    테스하자 2015.02.28 21:56

    좋은데요.. 전 왜 이제서 봤을까요..


    이전 글을 보니 가상화가 메모리에 상주시키는거 같은데 맞나요?

    많은량의 이미지를 가상화 시키면 메모리 사용량이 많이 늘어나겠군요?

  • profile
    예지력1 2015.03.03 22:56
    많은양이 정확히 얼마만큼의 양을 말씀하시는지는 모르겠군요
    다만 가상화에 따른 메모리사용량은 체감이 거의 불가능할정도로 퍼포먼스저하가 없습니다
  • profile
    테스하자 2015.03.03 23:00
    그냥 궁금해서 물어본겁니다.
    나름 이것저것 만져서 해보니 좋네요.
  • profile
    예지력1 2015.03.03 23:06
    최근에 새로 알게된건데 폴더나 많은 양의 파일을 가상화시키기에는 Enigma Virtual Box 라는 패커가 유용한것같습니다.
    폴더까지 지원하네요!
  • profile
    GOLD 2015.03.02 03:44

    이걸로 같이있던 이미지파일을 가상폴더에 옮기고 원래있던폴더엔 없앨수 있나요?

  • profile
    예지력1 2015.03.03 22:57
    네 가능합니다
    처음에 Dll로 폴더가상화하고, 가상화한 폴더로 FileCopy, 원래폴더 FileDelete
  • profile
    GOLD 2015.03.04 00:08
    이미지파일을 exe안에 포함시켜도 이미지서치는 잘작동하나요?
  • profile
    예지력1 2015.03.04 00:31

    이런 글자수 제한이 있다니!
  • profile
    GOLD 2015.03.04 00:51

    음 다시한번 질문할께요
    만약에


    예제.exe라는 파일안에?
    ImageSearch,vx,vy, 0,0, A_ScreenWidth, A_ScreenHeight, *60 테스트1.png
    if ErrorLevel=0
    {
    MouseClick, Left, %vx%,%vy%
    sleep, 3000
    }

    라는 스크립트가 있는데

    소스코드내에 있는 경로에 테스트1.png가 없어지고 테스트1.png는 예제.exe 안에 포함됫는데도 불구하고
    예제.exe안에 들어있는 저 스크립트는 잘 작동한다는거죠?

  • profile
    예지력1 2015.03.04 07:41
    포함됬는데도 불구하고 가 아니라 포함됬으면 아닐까요..

    경로의 1.png가 없어진다는게 파일삭제를 말씀하시는거라면 이미지서치명령어가 작동하려면 파일이 꼭 있어야합니다. 삭제하면 안되겠죠. 스크립트 최상단에 파일인스톨 명령어가 있으면 프로그램 실행시마다 파일을 설치합니다
  • profile
    GOLD 2015.03.04 17:33
    제가 어휘력이 부족한것같네요 차근차근하나씩 질문할께요
    1. test라는 폴더안에 예제.ahk와 이미지.png라는 파일이 있습니다.
    2. 예제.ahk에는 fileinstall 이미지.png, 예제.exe 라는 내용이 있습니다.
    3.예제.ahk를 컴파일시켰습니다.
    4. 예제.exe를 한번 실행시켰습니다.
    5. test라는 폴더안에는 예제.exe라는 파일 한개만 존재하나요?
    6.만약 그렇다면 이미지서치가 가능한가요?
  • profile
    예지력1 2015.03.04 18:43
    5. 아니요 4번 실행시 이미지.png가 경로에 생겨요, 이걸 없애려고 가상화하는거고요
    6. 위 설명과 동일합니다, 가상화해도 이미지서치가 가능해요.
  • profile
    GOLD 2015.03.04 22:35
    그렇군요 그런데 그럼 어차피 소스경로엔 무조건 이미지파일이 있어야하는데 그러면 이 소스는 하나안하나 아닌가요?
  • profile
    예지력1 2015.03.05 12:05
    파일인스톨 글 읽어보셨나요?
    컴파일시 내장된다고 명시했습니다...
  • profile
    GOLD 2015.03.05 18:01
    저도 어제 직접해보고 알아차려서 지금 질문한것들이 너무 부끄러워 이불차는중입니다..
  • 핸콕 2015.03.03 12:52

    감사합니다!! 이미지보호 기술이네요^^

  • kacos 2015.03.10 09:19

    클라스가 다르네요. 추천

  • 매크로맨서 2015.03.19 11:14

    간결하고 유익한 글입니다

    추천

  • 혈마대사 2015.04.18 22:15

    감사합니다.

  • 련휘랑 2015.04.26 00:20

    감사합니다.

  • 스마트찬 2015.04.29 20:35

    예지력님 너무나 항상 감사드립니다 ㅎ

  • 빵삼이 2015.05.09 01:16

    항상 좋은글 감사합니다.

  • 샤먼 2015.05.17 22:46
    얼마전 오핫키에 입문해서 열심히 베워가는 초보자입니다 !!?

    F4::
    hModule := DllCall("LoadLibrary", str, A_ScriptDir "\bxsdk32.dll") ; DLL파일을 불러온다
    DllCall("bxsdk32\BoxedAppSDK_Init") ; DLL파일을 시작한다
    DllCall("bxsdk32\BoxedAppSDK_CreateVirtualDirectoryA", AStr, A_Temp, Int, 0) ; 폴더경로 를 가상화한다
    return

    F3::
    FileInstall, 1.png, %A_Temp%\1.png, 1
    return

    END::
    DllCall("bxsdk32\BoxedAppSDK_Exit") ; 가상화를 종료한다
    DllCall("FreeLibrary", "UInt", hModule) ; DLL파일을 닫는다
    return

    강좌를 보면서 이렇게 스크립트를 짜봤는데?
    임시폴더를 가상화로 잡아놓고 1.png 파일을 그 가상화 폴더로 풀었는데?
    제쪽에서는 폴더가 가상화가 안되고 그냥 파일이 보이네요
    혹시 제가 뭔가 실수한 부분이 있는건가요??


  • 샤먼 2015.05.17 23:26
    http://tailstar.net/autohotkey/6823204
    글 보고 해결했습니다..
    64비트..... 크흑..
    당했네요..
  • 사랑에지치다 2015.05.21 19:59

    감사합니다 대단하시네요

  • 필고 2015.05.23 01:56

    초보자라 좀 어렵네요 ㅠ

  • 라츠엘 2015.06.09 20:31

    예지력1님 감사합니다!

  • 프리니바투스 2015.06.24 10:11

    좋은 글 감사합니다^^

  • 하민 2015.06.25 12:34

    역시 어렵네요 고맙습니다.

  • 루카스 2015.06.29 08:32

    감사합니다.?

  • 르샤미르 2015.08.13 15:55

    좋은글 감사합니다.. ^^ 그넫 어렵다는..

  • sistt 2015.08.24 02:15

    와.. 가상화도 가능하군요 처음 알았습니다..

  • profile
    와이로 2015.09.05 17:17

    @예지력1 

    bxsdk32.dll 파일은 http://www.freefixer.com/library/file/bxsdk32.dll-158202/

    여기 있는거 받아쓰면 되겠죠

     

  • 석빡귀 2015.09.20 08:24

    dll나오면 이해가 잘안되네요;

  • 라이나이츠 2015.09.21 14:00

    짜응!!! 감사합니다

  • 크런키 2015.10.12 19:58

    감사합니다


전체 최신 인기글

전체 주간 인기글