Я нашел этот сайт из Google, и я предполагаю, что здесь люди помогают в проблемах с кодированием.
Я создаю фильтр "badword" для приложения, но у меня возникли проблемы. В настоящее время я создаю поток из точки входа приложений, и поток потоков выглядит следующим образом:
while(true)
{
if (!OpenClipboard(NULL))
ExitProcess(0); //TODO: Try opening clipboard again.
h = GetClipboardData(CF_TEXT); //h is HANDLE.
std::string CB_Data = (char*)h;
if(CB_Data.size() != NULL) //An attempt to check if it not empty
{
if ( std::regex_search(CB_Data.c_str(), BADWORD_FILTER))
{
try
{
EmptyClipboard();
SetClipboardData(CF_TEXT, INFORMATION); //INFORMATION is converted to char from HANDLE. INFORMATION = "Bad word filter detected forbidden words pattern."
}
catch(...)
{
//TODO: Error logging
}
}
else if ( std::regex_search(CB_Data.c_str(), BADWORD_FILTER2))
{
try
{
EmptyClipboard();
SetClipboardData(CF_TEXT, INFORMATION); //INFORMATION is converted to char from HANDLE. INFORMATION = "Bad word filter detected forbidden words pattern."
}
catch(...)
{
//TODO: Error logging
}
EmptyClipboard();
SetClipboardData(CF_TEXT, INFORMATION); //INFORMATION is converted to char from HANDLE. INFORMATION = "Bad word filter detected forbidden words pattern."
}
}
CloseClipboard();
Sleep(1000); //Check every 1 second for the forbidden words.
}
Таким образом, это приложение контролирует буфер обмена из запрещенных слов. Однако большую часть времени я сталкиваюсь с выражением "Expression: Invalid null point" -error, и я не знаком с отладчиком Visual Studio. Я пробовал, но явно не добился успеха.
Вот ошибка: http://i.stack.imgur.com/wACnA.png
Любая помощь будет принята с благодарностью, спасибо.
Вы получаете сообщение об ошибке, потому что GetClipboardData()
не возвращает указатель const char*
а конструктор std::string
пытается прочитать ваш параметр как const char*
.
Как вы заявляете в вопросе, GetClipboardData()
возвращает HANDLE
. См. Эту тему для правильного примера использования этой функции.
Другие полезные советы:
CB_Data.size()
- целое число без знака (длина строки), а не указатель. Не сравнивайте его с NULL
!
#include <regex>