我试图从另一个应用程序中获取所选文本而不使用剪贴板。我找到了从活动应用程序获取HWND的方法,但是当我使用EM_GETSELTEXT时,它们不是缓冲区中的文本。
require_once 'Google/autoload.php';
$client_email = 'myemail.com';
$private_key = file_get_contents('myfilename.p12');
$scopes = ['https://www.googleapis.com/auth/doubleclickbidmanager'];
$credentials = new Google_Auth_AssertionCredentials(
$client_email,
$scopes,
$private_key,
);
$client = new Google_Client();
$client->setAssertionCredentials($credentials);
if ($client->getAuth()->isAccessTokenExpired()) {
$client->getAuth()->refreshTokenWithAssertion();
}
$service = new Google_Service_DoubleClickBidManager($client);
$response = $service->queries->listqueries();
答案 0 :(得分:-1)
您可以分两步完成。 首先发送EM_GETSEL以获取所选文本的开始/结束索引(如果未选择任何内容,则为0,0) 然后调用GetWindowText或发送WM_GETTEXT以获取完整的文本并过滤掉所选的子字符串
name(i,:) = dataSet(i).filename; "
顺便说一句,你的代码中有一个等待发生的错误:
您动态分配缓冲区并从函数
返回指针char * buffer = new char [100];
在某些时候你必须删除[]指针。但是如果函数出现问题,则返回空字符串文字“”。如果删除代码崩溃。所以要么你最终导致崩溃或内存泄漏。 我建议将指针作为参数传递给函数,并将字符串复制到那里。