这段DLL注入的代码哪儿有有关问题,求解(高分求)

这段DLL注入的代码哪儿有问题,求解(高分求)。
C/C++ code

#include <windows.h> 
#include <iostream>
#include <cstdio>

using namespace std;

BOOL WINAPI LoadLib(DWORD dwProcessId, LPWSTR lpszLibName) 
{ 
    HANDLE hProcess = NULL, 
    hThread = NULL; 
    LPWSTR lpszRemoteFile = NULL; 
    hProcess = OpenProcess(PROCESS_CREATE_THREAD | PROCESS_VM_OPERATION | PROCESS_VM_WRITE,FALSE,dwProcessId); 
    if (hProcess == NULL) 
    { 
        return FALSE; 
    } 
    lpszRemoteFile = (LPWSTR)VirtualAllocEx(hProcess, NULL, sizeof(WCHAR) * lstrlenW(lpszLibName) + 1, MEM_COMMIT, PAGE_READWRITE); 
    if (lpszRemoteFile == NULL) 
    { 
        return FALSE; 
    } 
    if (!WriteProcessMemory(hProcess,lpszRemoteFile,(PVOID)lpszLibName, sizeof(WCHAR) * lstrlenW(lpszLibName) + 1,NULL)) 
    { 
        return FALSE; 
    } 
    FARPROC pfnThreadRtn = (FARPROC)GetProcAddress(GetModuleHandle("Kernel32.dll"),"LoadLibraryW"); 
    if (pfnThreadRtn == NULL) 
    { 
        return FALSE; 
    } 
    hThread = CreateRemoteThread(hProcess,NULL,0,(LPTHREAD_START_ROUTINE)pfnThreadRtn,lpszRemoteFile,0,NULL); 
    if (hThread == NULL) 
    { 
        return FALSE; 
    } 
    WaitForSingleObject(hThread, INFINITE); 
    VirtualFreeEx(hProcess, lpszRemoteFile, 0, MEM_RELEASE); 
    CloseHandle(hThread); 
    CloseHandle(hProcess);    
    return TRUE; 
} 

int main(int argc,char* argv[])
{ 
    if(LoadLib(1836,(LPWSTR)"dll.dll") == FALSE)
    {
        cout << "注入失败" << endl;    
    }
    else 
    {
        cout << "注入成功" << endl;        
    }
    system("pause");
    return 0; 
}



能够运行,函数也返回TRUE,但是注入的进程没有任何反应,1836是我电脑上explorer.exe的当前PID
dlld.dll中的代码如下
C/C++ code

BOOL APIENTRY DllMain( HANDLE hModule, 
                       DWORD  ul_reason_for_call, 
                       LPVOID lpReserved
                     )
{
    switch (ul_reason_for_call)
    {
    case DLL_PROCESS_ATTACH:
        MessageBox(NULL,"已经注入","Message",MB_OK);
        break;
    case DLL_PROCESS_DETACH:
        MessageBox(NULL,"已经注销","Message",MB_OK);
        break;
    }
    return TRUE;
}


求大牛不吝指点,感激不尽。

------解决方案--------------------
用procexp查看dll是否装载了
------解决方案--------------------



C/C++ code

#include "stdafx.h"
#include <windows.h> 
#include <iostream>
#include <cstdio>


using namespace std;

BOOL WINAPI LoadLib(DWORD dwProcessId, LPWSTR lpszLibName) 
{ 
    HANDLE hProcess = NULL, 
        hThread = NULL; 
    LPWSTR lpszRemoteFile = NULL; 
    hProcess = OpenProcess(PROCESS_CREATE_THREAD | PROCESS_VM_OPERATION | PROCESS_VM_WRITE,FALSE,dwProcessId); 
    if (hProcess == NULL) 
    { 
        return FALSE; 
    } 
    lpszRemoteFile = (LPWSTR)VirtualAllocEx(hProcess, NULL, sizeof(WCHAR) * lstrlenW(lpszLibName) + 1, MEM_COMMIT, PAGE_READWRITE); 
    if (lpszRemoteFile == NULL) 
    { 
        return FALSE; 
    } 
    if (!WriteProcessMemory(hProcess,lpszRemoteFile,(PVOID)lpszLibName, sizeof(WCHAR) * lstrlenW(lpszLibName) + 1,NULL)) 
    { 
        return FALSE; 
    } 
    FARPROC pfnThreadRtn = (FARPROC)GetProcAddress(GetModuleHandle(TEXT("Kernel32.dll")),"LoadLibraryW"); 
    if (pfnThreadRtn == NULL) 
    { 
        return FALSE; 
    } 
    hThread = CreateRemoteThread(hProcess,NULL,0,(LPTHREAD_START_ROUTINE)pfnThreadRtn,lpszRemoteFile,0,NULL); 
    if (hThread == NULL) 
    { 
        return FALSE; 
    } 
    WaitForSingleObject(hThread, INFINITE); 
    VirtualFreeEx(hProcess, lpszRemoteFile, 0, MEM_RELEASE); 
    CloseHandle(hThread); 
    CloseHandle(hProcess);    
    return TRUE; 
} 


int _tmain(int argc, _TCHAR* argv[])
{
    HWND hTarget = FindWindow(NULL, TEXT("无标题 - 记事本"));
    _ASSERT(hTarget != NULL);
    DWORD dwPID;
    GetWindowThreadProcessId(hTarget, &dwPID);
    if(LoadLib(dwPID, TEXT("d:\\dll.dll")) == FALSE)
    {
        cout << "注入失败" << endl;    
    }
    else 
    {
        cout << "注入成功" << endl;        
    }
    system("pause");
    return 0;
}