[ vasko1 @ 18.01.2011. 18:13 ] @
zna li neko kako da uhvatim selektovani text sa bilo koje aplikacije koja je u fokusu trenutno, a da pri tom ne koristim clipboard?

nasao sam kod kako da uhvatim prozor koji je u fokusu ali ne znam api koja bi kopirala selektovani text u MOJ buffer?

u taj buffer bi isao samo text (stringovi)

mislim na windows naravno

googlao sam dosta na ovu temu al ne nadjoh nista upotrebljivo

[ X Files @ 18.01.2011. 18:38 ] @
Nekada davno sam to isto pitao na jednom forumu.
http://tinyurl.com/4nkowru

E sad, verovatno se moze napraviti (hardcode-ovan) mehanizam za dohvatanje teksta vecine kontrola, ali izgleda ne svih.


Po mojim saznanjima na kraju je izgleda bolje uloziti vreme u neku OCR funkciju screen fontova.


Ako neko ima jos neku ideju, resenje, neka je please iznese... i ja sam zainteresovan (a lenj) :)
[ vasko1 @ 18.01.2011. 20:09 ] @
2004 jbt...


pada mi na pamet,recimo da kopiram selektovani text u clipboard a da pre toga bekapujem clipboard u neki buffer,pa onda izvadim iz njega string u treci buffer,pa bek up da vratim u clipboard

ali ovo mi deluje krajnje neelegantno...

ili neki hook iz grafike,ako je tako nesto moguce...

evo ovde nesto opsirnije o clipboardovima,mada mi se cini neupotrebljivo za ovu svrhu

http://netez.com/2xExplorer/shellFAQ/adv_clip.html
[ Lord Of The Nations @ 20.04.2011. 16:10 ] @
Evo da vam docaram kao od prilike to treba da izgleda. sve sto treba da dodate je da
nadjete pravu klasu mozile u kojoj je text koji zelite da kopirate u buffer.

Code:
#include <windows.h>
#include <tlhelp32.h>
#include <tchar.h>
#include <stdio.h>
#define TEXT_LENGTH 1024
using namespace std;
BOOL ListProcessModules(DWORD);

int main()
    {
    char text[TEXT_LENGTH+1];
    HWND hWnd = NULL;
    DWORD pid = NULL;
    while(1)
        {
        hWnd = GetForegroundWindow();
        GetWindowThreadProcessId( hWnd, &pid );
        if(ListProcessModules(pid))break;
        Sleep(500);
        }
    SendMessage( hWnd, WM_GETTEXT, TEXT_LENGTH, (LPARAM)text );
    if(strlen(text)>0)
    printf(text);
    return 0;
    }
BOOL ListProcessModules( DWORD dwPID )
    {

    HANDLE hModuleSnap = INVALID_HANDLE_VALUE;
    MODULEENTRY32 me32;

    // Take a snapshot of all modules in the specified process.
    hModuleSnap = CreateToolhelp32Snapshot( TH32CS_SNAPMODULE, dwPID );
    if( hModuleSnap == INVALID_HANDLE_VALUE )
        {

        return( FALSE );
        }

    // Set the size of the structure before using it.
    me32.dwSize = sizeof( MODULEENTRY32 );

    // Retrieve information about the first module,
    // and exit if unsuccessful
    if( !Module32First( hModuleSnap, &me32 ) )
        {

        CloseHandle( hModuleSnap );           // clean the snapshot object
        return( FALSE );
        }

    // Now walk the module list of the process,
    // and display information about each module
    if(!strcmp(me32.szModule,"firefox.exe"))
        {
        CloseHandle( hModuleSnap );
        return true;

        }
    CloseHandle( hModuleSnap );
    return( false );
    }
[ Mihajlo Cvetanović @ 20.04.2011. 16:28 ] @
Pitanje je kako uhvatiti selektovani tekst (ili markirani tekst), a ne sav tekst iz fokusirane kontrole.