vc代码
/* 取桌面 ListView 的句柄 */
    HWND hDeskTop;
    hDeskTop = FindWindow("progman", NULL);
    hDeskTop = FindWindowEx(hDeskTop, 0, "shelldll_defview", NULL);
    hDeskTop = FindWindowEx(hDeskTop, 0, "syslistview32", NULL);
/* 取 explorer.exe 句柄. 注意 OpenProcess 的参数 */
    DWORD dwProcessId;
    GetWindowThreadProcessId(hDeskTop, &dwProcessId);
    HANDLE hProcess = OpenProcess(PROCESS_VM_READ | PROCESS_VM_OPERATION, FALSE, dw
ProcessId);
/* 在 explorer.exe 空间内分配内存 */
    PVOID pv = VirtualAllocEx(hProcess, NULL, sizeof(POINT), MEM_COMMIT, PAGE_READW
RITE);
/* 给桌面 ListView 窗口发一 LVM_GETITEMPOSITION 取 "我的电脑" 坐标 */
    ListView_GetItemPosition(hDeskTop, 1, pv);
/* 把由 LVM_GETITEMPOSITION 获得的坐标数据复制到 pt 结构 */
    POINT pt;
    ReadProcessMemory(hProcess, pv, &pt, sizeof(POINT), NULL);
/* 释放内存, 句柄 */
    VirtualFreeEx(hProcess, pv, 0, MEM_RELEASE);
    CloseHandle(hProcess);
想把上面的转为C#代码.
前面几句 这样转不知是否正确
[DllImport("user32.dll", EntryPoint = "FindWindow")]
        public static extern IntPtr FindWindow(string lpClassName,string lpWindowName);        [DllImport("user32.dll", EntryPoint = "FindWindowExA")]
        public static extern IntPtr FindWindowExA(IntPtr hwndParent, IntPtr hwndChildAfter, string lpszClass, int lpszWindow);/* 取桌面 ListView 的句柄 */
    HWND hDeskTop;
    hDeskTop = FindWindow("Progman", "Program Manager");
    hDeskTop = FindWindowExA(hWindow, (IntPtr)0, "SHELLDLL_DefView", 0);
    hDeskTop = FindWindowExA(hSHELLDLL_DefView, (IntPtr)0, "SysListView32", 0);  
          

解决方案 »

  1.   

    如果你装了VC的话,找到WinUser.H里面有MEM_COMMIT这样的常量,在C#声明这几个API和常量就差不多了,写法没什么大差别
      

  2.   

    如果你装了VC的话,找到WinUser.H里面有MEM_COMMIT这样的常量,在C#声明这几个API和常量就差不多了,写法没什么大差别=============
    常量我会查.问题是那些指针程序
      

  3.   

    要操作桌面上的图标?其实也不需要都用C#重写。你可以把功能封装成函数,编译成C DLL。直接在C#中PInvoke 你的函数。会好很多。
      

  4.   

    要操作桌面上的图标?其实也不需要都用C#重写。你可以把功能封装成函数,编译成C DLL。直接在C#中PInvoke 你的函数。会好很多。
    ==========
    这代码是网上的文章里贴出来的.. 不知怎么在VC里编译....
      

  5.   

    建个C++项目,重新封装一下API,让C#可以调用就OK了。
      

  6.   

    建个C++项目,重新封装一下API,让C#可以调用就OK了。
    ============
    问题是我不会VC... 新那家一个DLL程序后.一大堆文件...不知在哪里搞. 自己试着把extern "C" _declspec(dllexport) int GetDeskTop()
    {
    HWND   hDeskTop; 
    hDeskTop   =   FindWindow("progman",   NULL); 
    hDeskTop   =   FindWindowEx(hDeskTop,   0,   "shelldll_defview",   NULL); 
    hDeskTop   =   FindWindowEx(hDeskTop,   0,   "syslistview32",   NULL); 

     return hDeskTop;
    }这样就是错的.. 不知怎么 HWND   转int