daipuweiai 2019-01-21 18:20 采纳率: 100%
浏览 963
已采纳

利用SendMessage模拟鼠标左键双击打开文件,但是文件没打开,请熟悉Windows编程的大神指点

利用SendMessage模拟鼠标左键双击打开文件,但是文件没打开。打印4次结果0。请熟悉Windows编程的大神指点

// SendMessage.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include "windows.h"
#include "stdlib.h"
#include "Winuser.h"

int main(int argc, char* argv[])
{
    HWND desktop = GetDesktopWindow();//屏幕窗口句柄
    desktop=GetWindow(desktop,GW_CHILD);
    /*8DWORD ProcessId;//要打开窗口的进程标识符
    ::GetWindowThreadProcessId(desktop, &ProcessId);
    HANDLE processH = ::OpenProcess(PROCESS_ALL_ACCESS, FALSE, ProcessId);*/
    int x = 30;
    int y = 24;
    ::SetCursorPos(x,y);
    //Sleep(1000);
    LRESULT result1 = ::SendMessage(desktop, WM_LBUTTONDOWN,VK_LBUTTON,MAKELPARAM(x,y));
    LRESULT result2 = ::SendMessage(desktop, WM_LBUTTONUP,0,MAKELPARAM(x,y));
    LRESULT result3 = ::SendMessage(desktop, WM_LBUTTONDOWN,VK_LBUTTON,MAKELPARAM(x,y));
    LRESULT result4 = ::SendMessage(desktop, WM_LBUTTONUP,0,MAKELPARAM(x,y));
    printf("%d %d %d %d\n",result1,result2,result3,result4);
    //::SendMessage(NULL, WM_LBUTTONDOWN, 0,(y<<16)|x);
    //::SendMessage(NULL, WM_LBUTTONUP, 0,(y<<16)|x);

    return 0;
}

  • 写回答

3条回答 默认 最新

  • lyhsdy 2019-01-22 10:16
    关注

    1.把SendMessage 改成PostMessage
    2.在两次点击中间插入sleep
    3.以上两个方法不行,就用单击然后发送回车按键

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 Python爬取指定微博话题下的内容,保存为txt
  • ¥15 vue2登录调用后端接口如何实现
  • ¥65 永磁型步进电机PID算法
  • ¥15 sqlite 附加(attach database)加密数据库时,返回26是什么原因呢?
  • ¥88 找成都本地经验丰富懂小程序开发的技术大咖
  • ¥15 如何处理复杂数据表格的除法运算
  • ¥15 如何用stc8h1k08的片子做485数据透传的功能?(关键词-串口)
  • ¥15 有兄弟姐妹会用word插图功能制作类似citespace的图片吗?
  • ¥15 latex怎么处理论文引理引用参考文献
  • ¥15 请教:如何用postman调用本地虚拟机区块链接上的合约?