gpt4 book ai didi

按关键字关闭窗口

转载 作者:行者123 更新时间:2023-11-30 16:07:44 25 4
gpt4 key购买 nike

我想关闭所有指定了关键字的窗口。下面是C代码:

#include <stdio.h>
#include <stdlib.h>
#define WINVER 0x0600
#define _WIN32_IE 0x0500
#include <windows.h>
#include <stdint.h>

BOOL CALLBACK WindowFoundCB(HWND hwnd, char* param) {
char *key = (char*) param;
char strIte[256]; // This way, you have allocated 256 bytes for the Window name.
GetWindowText(hwnd, strIte, 256);
if (IsWindowVisible(hwnd)){
char *p = strstr(strIte,key);
if (p!= NULL){
SendMessage(hwnd, WM_SYSCOMMAND, SC_CLOSE, 0);
printf("==== close a window by key [%s]: <%s>\n",key,strIte);
}
}
return TRUE;
}

int main(int argc, char *argv[])
{ int i;
for (i = 1; i < argc; i++){
printf("...keep closing window 1Hz for: %s\n", argv[i]);
}
if (argc > 1){
while (1){
for (i = 1; i < argc; i++){
char* aStr = argv[i];
EnumWindows(WindowFoundCB,&aStr);
}
Sleep(1000);
}
}
return 0;
}

但是,当我运行它时,它只打印消息:

...keep closing window 1Hz for : myKeyword

然后就没有任何进一步的 react ,即使我有一个名为“jjjj myKeyword--”的窗口。

请问这里有没有办法在关键字搜索时进行不区分大小写的比较?谢谢。

最佳答案

正如 @GSerg 和 @Hans Passant 指出的,存在两个问题:

  1. aStr 而不是 &aStr 传递给 EnumWindows
EnumWindows

lParam是要传递给回调函数的应用程序定义的值。您定义的回调函数需要 char* 而不是 char**

  • 当您从命令窗口调用应用程序时,您的关键字将包含在控制台窗口标题中,如下图所示。 (“project”是这里的关键字。)因此您的应用程序窗口也将被关闭,因为它包含该关键字。使用 GetConsoleWindow() 排除它。
  • enter image description here

    ownWnd = GetConsoleWindow();
    //...
    if ((p != NULL) && (hwnd != ownWnd)) {
    SendMessage(hwnd, WM_SYSCOMMAND, SC_CLOSE, 0);
    printf("==== close a window by key [%s]: <%s>\n", key, strIte);
    }

    By the way, is there a way to make case-insensitive compare for searching of keyword here?

    您可以将关键字和窗口标题都转换为小写,然后进行比较。

    char* aStr = argv[i];
    //To lowercase
    for (int i = 0; aStr[i]; i++) {
    aStr[i] = tolower(aStr[i]);
    }
    EnumWindows(WindowFoundCB, aStr);

    //...

    //To lowercase
    for (int i = 0; strIte[i]; i++) {
    strIte[i] = tolower(strIte[i]);
    }

    char *p = strstr(strIte, key);

    关于按关键字关闭窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59543798/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com