zoukankan      html  css  js  c++  java
  • 在现有的资源管理器的窗口上打开里面的文件夹

    这个方法是通过寻找本地资源管理器的窗口句柄,再去找地址栏编辑框的句柄,然后地址栏末端加上文件夹名字,最后发送回车消息,完成操作。似乎有几个步骤可以省略,还需要回头完善一下,例如组合框的下拉会被点击,这个操作不知道能不能省略或者让点击事件不那么明显,我禁用了以后就不能执行了,感觉还可以优化一下。因为那一段代码抄的一位大佬的代码,所以没去细细琢磨下每个类和消息产生的作用,但整体思路是正确的。

    #include "pch.h"
    #include <windows.h>
    #include <stdio.h>
    #include <wchar.h>
    #include <locale.h>
    #include <string.h>
    #pragma  warning (disable:4996) 
    void TcharToChar(const TCHAR * tchar, char * _char)
    {
        int iLength;
        //获取字节长度   
        iLength = WideCharToMultiByte(CP_ACP, 0, tchar, -1, NULL, 0, NULL, NULL);
        //将tchar值赋给_char    
        WideCharToMultiByte(CP_ACP, 0, tchar, -1, _char, iLength, NULL, NULL);
    }
    void CharToTchar(const char * _char, TCHAR * tchar)
    {
        int iLength;
        iLength = MultiByteToWideChar(CP_ACP, 0, _char, strlen(_char) + 1, NULL, 0);
        MultiByteToWideChar(CP_ACP, 0, _char, strlen(_char) + 1, tchar, iLength);
    }
    int main()
    {
        TCHAR str[1024] = TEXT("Hello World");
        HWND hwnd = NULL;
        HWND hToolbat;
    
    
        hwnd = FindWindowEx(NULL, NULL, TEXT("CabinetWClass"), NULL);
        hwnd = FindWindowEx(hwnd, NULL, TEXT("WorkerW"), NULL);
        hwnd = FindWindowEx(hwnd, NULL, TEXT("ReBarWindow32"), NULL);
        hwnd = FindWindowEx(hwnd, NULL, TEXT("Address Band Root"), NULL);
        hwnd = FindWindowEx(hwnd, NULL, TEXT("msctls_progress32"), NULL);
        hToolbat = FindWindowEx(hwnd, NULL, TEXT("ToolbarWindow32"), NULL);
        SendMessage(hToolbat, WM_LBUTTONDOWN, MK_LBUTTON, MAKELONG(0, 0));
        SendMessage(hToolbat, WM_LBUTTONUP, MK_LBUTTON, MAKELONG(0, 0));
        SendMessage(hToolbat, WM_LBUTTONDOWN, MK_LBUTTON, MAKELONG(0, 0));
        SendMessage(hToolbat, WM_LBUTTONUP, MK_LBUTTON, MAKELONG(0, 0));
    
    
        hwnd = FindWindowEx(hwnd, NULL, TEXT("ComboBoxEx32"), NULL);
        hwnd = FindWindowEx(hwnd, NULL, TEXT("ComboBox"), NULL);
        hwnd = FindWindowEx(hwnd, NULL, TEXT("Edit"), NULL);
    
        if (hwnd == NULL)
        {
            wprintf(L"%s
    ", L"error");
            return -1;
        }
        SendMessage(hwnd, WM_GETTEXT, 1024, (LPARAM)str);
        char b[1024];
        TcharToChar(str,b);
        strcat(b, "\PanData");
        CharToTchar(b,str);
        //MessageBox(NULL, str, TEXT("Caption"), 0);
        
        SendMessage(hwnd, EM_SETSEL, 0, lstrlen(str));
        SendMessage(hwnd, EM_REPLACESEL, true, (LPARAM)str);
        SendMessage(hwnd, WM_KEYDOWN, VK_RETURN, NULL);
        //SetWindowText(hwnd, str);
    
        return 0;
    }
  • 相关阅读:
    Code Reading chap2
    Code Reading chap4
    Code Reading chap6
    常用的一些sql基础语句汇总
    20170322、Linux常用命令汇总
    在windows上部署使用Redis
    20170322、php基础语法
    20170822、在Linux上部署使用Redis
    Linux安装配置SVN服务器
    Linux安装配置MySQL
  • 原文地址:https://www.cnblogs.com/suxia/p/11315737.html
Copyright © 2011-2022 走看看