Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > API de Windows
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 28-04-2006
mangi mangi is offline
Registrado
 
Registrado: abr 2006
Posts: 1
Poder: 0
mangi Va por buen camino
Atacar el ToolBarWindows32

Hola a todos!!
Llevo dias peleándome con los botones de un toolbar y no hay manera, no avanzo. Principalmente quisiera poder pulsar un determinado botón de una toolbar (ToolBarWinsdows32) en una aplicación externa. Para ello debo mandar el siguiente mensaje:

Código Delphi [-]
SendMessage(hTBwnd, TB_PRESSBUTTON, tbb.idCommand,MAKELONG(1,0));

Sin embargo no se exactamente que es idCommand.
He intentado tambien obtener su texto, pero tampoco lo consigo. Únicamente consigo contar el número de botones del toolbar.

Exactamente el codigo que estoy probando es:

Código Delphi [-]
const
  MAX_TEXT = 256;

var
  lpBuf: array[0..MAX_TEXT - 1] of char;
  tbb: TBBUTTONINFO;
  dwPId: DWORD;
  hProc: THANDLE;
  pText, pAddr: pointer;
  dwTmp: DWORD;
  index, id, nCount: integer;
  
begin
  if BOOL(GetWindowThreadProcessId(hTBwnd, @dwPId)) then
    hProc := OpenProcess(PROCESS_VM_OPERATION or PROCESS_VM_READ or PROCESS_VM_WRITE, FALSE, dwPId);
  if hProc <> 0 then
  begin
    pText := VirtualAllocEx(hProc, nil, MAX_TEXT, MEM_RESERVE or MEM_COMMIT, PAGE_READWRITE);
    pAddr := VirtualAllocEx(hProc, nil, sizeof(tbb), MEM_RESERVE or MEM_COMMIT, PAGE_READWRITE);

    nCount := SendMessage(hTBwnd, TB_BUTTONCOUNT, 0, 0);
    showmessage(IntTostr(nCount));
    SetForegroundWindow(hTBwnd);

    tbb.idCommand:=id;
    tbb.cbSize := sizeof(tbb);
    tbb.dwMask := TBIF_TEXT;
    tbb.pszText := pText;
    tbb.cchText := sizeof(pText);

    //para coger información del botón, y a partir del idCommand poder utilizar PressButton
    WriteProcessMemory(hProc, pAddr, @tbb, sizeof(tbb), dwTmp);
    SendMessage(hTBwnd, TB_GETBUTTONINFO, 0, LPARAM(@tbb));
    //pongo cero en idcommand porque no se que hay que poner
    ReadProcessMemory(hProc, pText, @lpBuf, MAX_TEXT, dwTmp);
    showmessage(lpBuf);

    SendMessage(hTBwnd, TB_PRESSBUTTON,tbb.idCommand,MAKELONG(1,0));
  end;

  if Assigned(pAddr) then
    VirtualFreeEx(hProc, pAddr, 0, MEM_RELEASE);
  if Assigned(pText) then
    VirtualFreeEx(hProc, pText, 0, MEM_RELEASE);
  CloseHandle(hProc);
end;

Me gustaría que alguien me indicara qué es idCommand y cómo saber qué valor darle.

También cómo pulsar un botón, y qué errores ven en mi código.

Muchas gracias y saludos a todos!

Última edición por dec fecha: 28-04-2006 a las 13:29:53.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Atacar cartografías tipo Map Point o NafTec socger Varios 3 23-12-2005 10:04:09
¿Con .Net que bases de datos puedo atacar y como??? burasu .NET 4 17-09-2005 12:16:05
Atacar tablas Paradox con ADO. Chojj Conexión con bases de datos 2 02-07-2003 20:50:12


La franja horaria es GMT +2. Ahora son las 23:18:10.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi