GetClipboardData检索网页上的旧数据C ++ windows

时间:2016-12-17 11:13:45

标签: c++ string winapi

这是一个很棒的论坛,我在这里学到了很多东西。我这些年来从未发布过,或者问了一个问题。我从论坛学习PHP并且非常擅长。我现在正在学习C ++,我很惊讶为了实现20个字符的PHP代码可以完成的相同简单目标需要多少代码。但学习很有趣,我真的很享受。我搜索了这个论坛和谷歌,在这个问题上我找不到任何东西。这是一个对我来说毫无意义的谜,但我是C ++和桌面应用程序开发的初学者。也许我正在寻找错误的短语,但我找不到任何相关内容。

我创建了一个程序,当用户按下ctrl + c时,将剪贴板内容复制到文本文件中。我花了好几个晚上才知道这一点并开始工作。但它确实有些奇怪,我无法弄明白。

我正在创建一个Windows GUI 我正在使用Code :: Blocks和标准编译器。 我有Windows 7

我的功能编译完全正常。但.... 如果我在浏览器的网页上使用ctrl + c,它会打印最后一个sting,而不是当前正在复制的内容。 然而,这个相同的程序在运行时,会在记事本或任何其他应用程序中写出正确的当前突出显示的内容。 仅在Web浏览器中,它才会执行此操作,即写入最后复制的数据。 在记事本中,相同的键,相同的功能,相同的程序,当它仍在运行时...将正确的数据写入文本文件。

它如何100%工作并且在编译时没有显示任何警告或错误,但在网页浏览器中它会写入旧数据? 如果我在网页上连续两次使用ctrl + c,那么它将对文本文件写入2次,首先是我上次复制时的旧内​​容,然后是网页上正确突出显示的内容。 但它在notpad或wordpad或任何这些应用程序中都很完美。

这里发生了什么?我是C ++的新手,我没有得到它。 但是,我在这里找不到任何与Windows相同的问题。 任何帮助是极大的赞赏。我已经来这里多年了,从来没有问任何问题,只读阅读....但是这个让我感到难过,我对C ++太新了,不知道这里发生了什么。

// copy clipboard when user types left ctrl and c at same time.
            if (key == 0x43){

      if( GetAsyncKeyState( 0xA2 ) )
            {

  if (!OpenClipboard(NULL))
HANDLE h = GetClipboardData(CF_TEXT);

// variables f and k as clipboard dump beginning and ending
LPCSTR f = "[COPY TO CLIPBOARD]";
LPCSTR k = "[COPY TO CLIPBOARD ENDS]";

printf("%s\n", (char *)h); // prints clipboard into console

// prints clipboard content to the text output file sandwiched by f and k
fprintf(output,"%s", (char *)f);
fprintf(output,"%s",(char *)h);
fprintf(output,"%s",(char *)k);



  CloseClipboard();


            }
}

为什么我在网站上获得最后复制的数据而不是在notpad中的任何线索?

提前感谢。

0 个答案:

没有答案