2013-04-01 3 views
0

지금은 2 주 동안 만 프로그래밍 중이므로 새로운 어셈블리가되어 도움이 필요합니다.masm 어셈블리를 사용하여 디렉토리를 변경하십시오.

변경 사항을 보려면 디렉토리와 모든 하위 디렉토리를 감시해야합니다. 내가 알 필요가있는 유일한 변경 사항은 파일 작성과 파일 편집이지만 괜찮은 다른 파일을 포함하는 경우입니다.

메시지 상자를 변경 한 파일에 대한 알림을 받아야합니다. 파일의 변경 내용을 알 필요가 없으며 메시지 상자의 파일 경로 만 있으면됩니다. 웹 검색을 시도했지만 어셈블리에서 특정 작업을 수행하는 방법을 찾을 수 없습니다.
내가 찾을 수있는 유일한 물건은 내가 생각하기에이 코드는 masm을 위해 쓰여졌 고 나는 그것을 시도했지만 메시지 상자 A 나 다른 글자는 그 것이다. 그리고 그것은 그 디렉토리에있는 파일의 이름을 바꾸지 못하게한다. 그렇게하기 싫어. 누군가가 위의 코드를 수정하거나 나에게 그것은 좋은 것 작동하는 다른 코드를 표시 할 수 있습니다 경우

.data 
FolderPath3 db "C:\users",0 
.data ? 
hFile dd ? 
FileBuffer  DB 200 DUP(?) 

ThreadProc PROC uses edi esi Param:DWORD 
    LOCAL lpBytesReturned:dword 

    invoke CreateFile,addr FolderPath3,GENERIC_READ,FILE_SHARE_DELETE or FILE_SHARE_READ,0,\ 
       OPEN_EXISTING,FILE_FLAG_BACKUP_SEMANTICS,0 
    mov hFile,eax 
    invoke ReadDirectoryChangesW,hFile,addr FileBuffer,sizeof FileBuffer,TRUE,FILE_NOTIFY_CHANGE_LAST_ACCESS,\ 
       addr lpBytesReturned,0,0 
    .if eax==0 
     invoke MessageBoxA,0,0,0,MB_OK 
    .else 
     xor ecx,ecx 
@@: 
     add edi,ecx 
     lea edi,FileBuffer 
     mov esi,[edi].FILE_NOTIFY_INFORMATION.Action 
     .if esi==FILE_ACTION_MODIFIED 
        invoke MessageBoxA, NULL, addr [edi].FILE_NOTIFY_INFORMATION.FileName, offset BoxCaption, NULL 

        .elseif esi==0 
      invoke CloseHandle,hDir 
      ret 
     .endif 
     mov ecx,[edi].FILE_NOTIFY_INFORMATION.NextEntryOffset 
     .if ecx==0 
      invoke RtlZeroMemory,addr FileBuffer,sizeof FileBuffer 
      jmp ThreadProc 
     .endif 
     jmp @B 
    .endif 

    ret 
ThreadProc ENDP 

, 당신에게 운영 체제 특정 서비스 및 알림 처리를

답변

1

을 작업의 본질입니다 감사합니다.

어셈블리에서이 작업을 수행하지 못한 경우 높은 수준의 언어 (C, C++, Perl 등)로 코딩하고 작동 시키십시오. MSDN에서이 작업을 수행하는 예제를 찾는 것이 어렵지 않아야합니다. 그렇게하는 법을 배웠다면 어셈블리 언어가 무엇을해야하는지 명확하게 알 수 있습니다.

+0

나는이 vb.net 버전이 있지만 어셈블리에서 무엇을해야할지 모르겠다. – patchariadog

관련 문제