处理Windows剪贴板的代码在某些计算机上不起作用

时间:2013-10-05 13:27:35

标签: c++ clipboard

我为我的一个朋友写了这个节目 它的目的是将您复制的每个文本保存到文件中

在我的电脑上程序工作正常,但在我的朋友电脑上它不会复制所有行

#include <windows.h>
#include <stdio.h>

using namespace std;

int GetKeyboardInput(HANDLE hstdin);

int main()
{
    HANDLE clip;
    char* lastClip = (char*) malloc(1024);
    char* currClip = (char*) malloc(1024);
    FILE* file;
    HANDLE hstdin;
    int key;

    hstdin = GetStdHandle(STD_INPUT_HANDLE);
    strcpy(lastClip, "");
    file = fopen("clipboard.txt", "w");
    if(file != NULL)
    {
        do
        {
            if (OpenClipboard(NULL))
                clip = GetClipboardData(CF_TEXT);

            if(clip != NULL)
            {
                if(strlen((char*)clip) <= MAXLEN)
                    strcpy(currClip, (char*) clip);
                else
                    strcpy(currClip, "String toooooo long");


                if (strcmp(currClip,lastClip) != 0)
                {
                    fprintf(file, "%s \n", currClip);
                    strcpy(lastClip, currClip);
                }
            }

            CloseClipboard();

            key = GetKeyboardInput(hstdin);
        }while (key != VK_ESCAPE);

        fclose(file);
    }
    else
        printf("Failed opening file");

    system("pause");

    return 0;
}

int GetKeyboardInput(HANDLE hstdin)
{
    INPUT_RECORD irInput;
    DWORD InputsRead = 0;

    ReadConsoleInput(hstdin, &irInput, 1, &InputsRead);
    return irInput.Event.KeyEvent.wVirtualKeyCode;
}

代码非常简单,所以我认为不需要解释 我不能重新创建相同的情况[​​我试图复制相同的文本,但它适用于我]的其他电脑,所以我认为代码上有一个错误

编辑:我的朋友使用Windows 8 64位而不是64位使用7,可能是这个问题吗?

0 个答案:

没有答案