如何从其他应用程序中获取所选文本?

时间:2015-05-21 09:54:23

标签: c++ winapi

我试图从另一个应用程序中获取所选文本而不使用剪贴板。我找到了从活动应用程序获取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();

1 个答案:

答案 0 :(得分:-1)

您可以分两步完成。 首先发送EM_GETSEL以获取所选文本的开始/结束索引(如果未选择任何内容,则为0,0) 然后调用GetWindowText或发送WM_GETTEXT以获取完整的文本并过滤掉所选的子字符串

name(i,:) = dataSet(i).filename; "

顺便说一句,你的代码中有一个等待发生的错误:

您动态分配缓冲区并从函数

返回指针

char * buffer = new char [100];

在某些时候你必须删除[]指针。但是如果函数出现问题,则返回空字符串文字“”。如果删除代码崩溃。所以要么你最终导致崩溃或内存泄漏。 我建议将指针作为参数传递给函数,并将字符串复制到那里。