Página 1 de 1
Incrustar notepad en un control
Publicado: Mar Jul 27, 2010 1:11 am
por buzonjmartial
Hola,
Estoy probando a incrustar notepad.exe una vez ejecutado en un control,
por ejemplo un TBevel.
Con findwindow(cTitle) encuentro el handle del notepad en ejecución.
Pero no encuentro la manera en xailer de incrustarlo. He visto ejemplos
en VB con el Api de windows, pero en xailer nada me va como dicen los
ejemplos.
¿Alguien me puede echar un cable de por donde van los tiros?
Da igual el notepad o cualquier otra aplicación ejecutable.
Un Saludo,
Joaquín Martínez
Incrustar notepad en un control
Publicado: Jue Jul 29, 2010 3:05 am
por nospam
Joaquin:
No seria mas facil meter un TRichEdit?
terminas antes y tienes un editor tipo Word nativo
Saludos
Rene Flores
http://www.ciber-tec.com
El 26/07/2010 06:11 p.m., "Joaquín Martínez." escribió:
> Hola,
>
> Estoy probando a incrustar notepad.exe una vez ejecutado en un control,
> por ejemplo un TBevel.
>
> Con findwindow(cTitle) encuentro el handle del notepad en ejecución.
>
> Pero no encuentro la manera en xailer de incrustarlo. He visto ejemplos
> en VB con el Api de windows, pero en xailer nada me va como dicen los
> ejemplos.
>
> ¿Alguien me puede echar un cable de por donde van los tiros?
>
> Da igual el notepad o cualquier otra aplicación ejecutable.
>
> Un Saludo,
> Joaquín Martínez
Incrustar notepad en un control
Publicado: Jue Jul 29, 2010 8:52 am
por buzonjmartial
Hola René,
He puesto el Notepad como ejemplo, pero realmente me refería
ha incrustar un .exe ejecutándose en un Bevel por ejemplo.
Lo he conseguido incrustar a "pelo" en un bevel heredando de la
Tcontrol de Xailer, pero inexplicablemente el notepad funciona
bien, pero el Wordpad en cambio, al moverte por los Tedits
con el Tabulador, al llegar al Wordpad da un GPF impresionante.
De ahí venía la pregunta, si los que conocen Xailer más a fondo,
pudieran indicar una pequeñísima muestra de si se pude hacer sin
problemas o con Xailer no se puede con garantías.
He visto ejemplos en VB que parece que funcionan bien.
Un Saludo y gracias,
Joaquín
El 29/07/10 3:05, René Flores <"rflores escribió:
> Joaquin:
>
> No seria mas facil meter un TRichEdit?
> terminas antes y tienes un editor tipo Word nativo
>
> Saludos
>
> Rene Flores
>
http://www.ciber-tec.com
>
> El 26/07/2010 06:11 p.m., "Joaquín Martínez." escribió:
>> Hola,
>>
>> Estoy probando a incrustar notepad.exe una vez ejecutado en un control,
>> por ejemplo un TBevel.
>>
>> Con findwindow(cTitle) encuentro el handle del notepad en ejecución.
>>
>> Pero no encuentro la manera en xailer de incrustarlo. He visto ejemplos
>> en VB con el Api de windows, pero en xailer nada me va como dicen los
>> ejemplos.
>>
>> ¿Alguien me puede echar un cable de por donde van los tiros?
>>
>> Da igual el notepad o cualquier otra aplicación ejecutable.
>>
>> Un Saludo,
>> Joaquín Martínez
>
Incrustar notepad en un control
Publicado: Jue Jul 29, 2010 9:34 am
por ignacio
Joaquin,
Lo que está haciendo no tiene mucho sentido. Los programas ejecutables no
está concebidos para ser utilizados dentro de otra ventana que no sea el
propio escritorio. El GPF que se produce, seguramente que no lo produce
Xailer, si no más bien la propia aplicación que intenta incrustar.
Un saludo
""Joaquín Martínez."" <
buzonjmartial@gmail.com> escribió en el mensaje de
noticias:4c51253b$[email=1@svctag-j7w3v3j....]1@svctag-j7w3v3j....[/email]
> Hola René,
>
> He puesto el Notepad como ejemplo, pero realmente me refería
> ha incrustar un .exe ejecutándose en un Bevel por ejemplo.
>
> Lo he conseguido incrustar a "pelo" en un bevel heredando de la
> Tcontrol de Xailer, pero inexplicablemente el notepad funciona
> bien, pero el Wordpad en cambio, al moverte por los Tedits
> con el Tabulador, al llegar al Wordpad da un GPF impresionante.
>
> De ahí venía la pregunta, si los que conocen Xailer más a fondo,
> pudieran indicar una pequeñísima muestra de si se pude hacer sin
> problemas o con Xailer no se puede con garantías.
>
> He visto ejemplos en VB que parece que funcionan bien.
>
> Un Saludo y gracias,
> Joaquín
>
>
>
>
> El 29/07/10 3:05, René Flores <"rflores escribió:
>> Joaquin:
>>
>> No seria mas facil meter un TRichEdit?
>> terminas antes y tienes un editor tipo Word nativo
>>
>> Saludos
>>
>> Rene Flores
>>
http://www.ciber-tec.com
>>
>> El 26/07/2010 06:11 p.m., "Joaquín Martínez." escribió:
>>> Hola,
>>>
>>> Estoy probando a incrustar notepad.exe una vez ejecutado en un control,
>>> por ejemplo un TBevel.
>>>
>>> Con findwindow(cTitle) encuentro el handle del notepad en ejecución.
>>>
>>> Pero no encuentro la manera en xailer de incrustarlo. He visto ejemplos
>>> en VB con el Api de windows, pero en xailer nada me va como dicen los
>>> ejemplos.
>>>
>>> ¿Alguien me puede echar un cable de por donde van los tiros?
>>>
>>> Da igual el notepad o cualquier otra aplicación ejecutable.
>>>
>>> Un Saludo,
>>> Joaquín Martínez
>>
>
Incrustar notepad en un control
Publicado: Jue Jul 29, 2010 10:11 am
por buzonjmartial
Ignacio,
he adjuntado una imágen, el problema parece estar en intentar dar el
foco al wordpad, pero a partir de ahí me pierdo.
Si se pudiera anular que gonextcontrol() intentara posicionarse en ese
control, debería funcionar.
He probado ltabstop a .F. y también falla, sin embargo, con el notepad
no falla y aparte, el foco vuelve correctamente al botón del Form.
Un Saludo,
Joaquín
El 29/07/10 9:34, Ignacio Ortiz de Zúñiga escribió:
> Joaquin,
>
> Lo que está haciendo no tiene mucho sentido. Los programas ejecutables
> no está concebidos para ser utilizados dentro de otra ventana que no sea
> el propio escritorio. El GPF que se produce, seguramente que no lo
> produce Xailer, si no más bien la propia aplicación que intenta incrustar.
>
> Un saludo
>
> ""Joaquín Martínez."" <
buzonjmartial@gmail.com> escribió en el mensaje
> de noticias:4c51253b$[email=1@svctag-j7w3v3j....]1@svctag-j7w3v3j....[/email]
>> Hola René,
>>
>> He puesto el Notepad como ejemplo, pero realmente me refería
>> ha incrustar un .exe ejecutándose en un Bevel por ejemplo.
>>
>> Lo he conseguido incrustar a "pelo" en un bevel heredando de la
>> Tcontrol de Xailer, pero inexplicablemente el notepad funciona
>> bien, pero el Wordpad en cambio, al moverte por los Tedits
>> con el Tabulador, al llegar al Wordpad da un GPF impresionante.
>>
>> De ahí venía la pregunta, si los que conocen Xailer más a fondo,
>> pudieran indicar una pequeñísima muestra de si se pude hacer sin
>> problemas o con Xailer no se puede con garantías.
>>
>> He visto ejemplos en VB que parece que funcionan bien.
>>
>> Un Saludo y gracias,
>> Joaquín
>>
>>
>>
>>
>> El 29/07/10 3:05, René Flores <"rflores escribió:
>>> Joaquin:
>>>
>>> No seria mas facil meter un TRichEdit?
>>> terminas antes y tienes un editor tipo Word nativo
>>>
>>> Saludos
>>>
>>> Rene Flores
>>>
http://www.ciber-tec.com
>>>
>>> El 26/07/2010 06:11 p.m., "Joaquín Martínez." escribió:
>>>> Hola,
>>>>
>>>> Estoy probando a incrustar notepad.exe una vez ejecutado en un control,
>>>> por ejemplo un TBevel.
>>>>
>>>> Con findwindow(cTitle) encuentro el handle del notepad en ejecución.
>>>>
>>>> Pero no encuentro la manera en xailer de incrustarlo. He visto ejemplos
>>>> en VB con el Api de windows, pero en xailer nada me va como dicen los
>>>> ejemplos.
>>>>
>>>> ¿Alguien me puede echar un cable de por donde van los tiros?
>>>>
>>>> Da igual el notepad o cualquier otra aplicación ejecutable.
>>>>
>>>> Un Saludo,
>>>> Joaquín Martínez
>>>
>>
--
Incrustar notepad en un control
Publicado: Lun Ago 02, 2010 1:28 pm
por Bingen Ugaldebere
/*
* Proyecto: CapturarExes
* Fichero: Form1.prg
* Descripción:
* Autor:
* Fecha: 02/08/2010
*/
#include "Xailer.ch"
CLASS TForm1 FROM TForm
COMPONENT oScrollBox1
COMPONENT oScrollBox2
METHOD CreateForm()
METHOD FormShow( oSender )
ENDCLASS
#include "Form1.xfm"
//---------------------------------------------------------- --------------------
METHOD FormShow( oSender ) CLASS TForm1
Local nHandle,nHandle2
Execute("Calc.exe")
Sleep(1000)
nHandle := GETWNDHND("Calculadora")
if nHandle != 0
Setpar(nHandle,::oScrollBox1:Handle)
MoveWindow(nHandle,0,0,::oScrollBox1:nWidth,::oScrollBox1:nH eight,.t.)
else
MsgAlert("Imposible instanciar Calculadora")
endif
nHandle2 := GETWNDHND("Xailer - CapturarExes")
if nHandle2 !=0
Setpar(nHandle2,::oScrollBox2:Handle)
MoveWindow(nHandle2,0,0,::oScrollBox2:nWidth,::oScrollBox2:n Height,.t.)
else
MsgAlert("Imposible instanciar Xailer")
endif
RETURN Nil
//---------------------------------------------------------- --------------------
#pragma BEGINDUMP
#include "windows.h"
#include "xailer.h"
HB_FUNC( SETPAR )
{
HWND hWnd;
hWnd = SetParent( LongToHandle(hb_parnl( 1 )),
LongToHandle(hb_parnl( 2 )));
hb_retnl ( (long) hWnd );
}
HB_FUNC( GETWNDHND )
{
HWND hWnd;
hWnd = FindWindow(NULL, hb_parc( 1 ));
hb_retnl ((long) hWnd );
}
HB_FUNC( MOVEWNDHND )
{
MoveWindow(LongToHandle(hb_parnl( 1 )),hb_parnl( 2 ),hb_parnl( 3
),hb_parnl( 4 ),hb_parnl( 5 ),hb_parl( 6 ));
}
#pragma ENDDUMP
//---------------------------------------------------------- -------------------
Incrustar notepad en un control
Publicado: Mar Ago 03, 2010 10:06 am
por buzonjmartial
Gracias Bingen,
Pero has probado tu ejemplo con una pantalla como la de mi imágen y el
Wordpad ??
Es decir, Creas un form con 3 Tedits por ejemplo, a continuación un
TBevel e incrustas con tu clase en el TBevel el wordpad.
Hasta ahí me funciona, luego, estando en el TEdit nº 1, vas avanzando
con Tabular por los controles, cuando llegues al TEdit nº 3 y le des a
tabular, a mí me da un GPF si es el WordPad, no si es el notepad o la
calculadora.
¿Podrías comprobarlo?
Un Saludo,
Joaquín
El 02/08/10 13:28, Bingen Ugaldebere escribió:
> /*
> * Proyecto: CapturarExes
> * Fichero: Form1.prg
> * Descripción:
> * Autor:
> * Fecha: 02/08/2010
> */
>
> #include "Xailer.ch"
>
> CLASS TForm1 FROM TForm
>
> COMPONENT oScrollBox1
> COMPONENT oScrollBox2
>
> METHOD CreateForm()
> METHOD FormShow( oSender )
>
> ENDCLASS
>
> #include "Form1.xfm"
>
> //---------------------------------------------------------- --------------------
>
>
> METHOD FormShow( oSender ) CLASS TForm1
> Local nHandle,nHandle2
>
> Execute("Calc.exe")
>
> Sleep(1000)
>
> nHandle := GETWNDHND("Calculadora")
> if nHandle != 0
> Setpar(nHandle,::oScrollBox1:Handle)
>
> MoveWindow(nHandle,0,0,::oScrollBox1:nWidth,::oScrollBox1:nH eight,.t.)
> else
> MsgAlert("Imposible instanciar Calculadora")
> endif
>
>
>
> nHandle2 := GETWNDHND("Xailer - CapturarExes")
> if nHandle2 !=0
> Setpar(nHandle2,::oScrollBox2:Handle)
>
> MoveWindow(nHandle2,0,0,::oScrollBox2:nWidth,::oScrollBox2:n Height,.t.)
> else
> MsgAlert("Imposible instanciar Xailer")
> endif
>
>
> RETURN Nil
>
> //---------------------------------------------------------- --------------------
>
> #pragma BEGINDUMP
> #include "windows.h"
> #include "xailer.h"
>
>
> HB_FUNC( SETPAR )
> {
> HWND hWnd;
> hWnd = SetParent( LongToHandle(hb_parnl( 1 )), LongToHandle(hb_parnl(
> 2 )));
> hb_retnl ( (long) hWnd );
> }
>
> HB_FUNC( GETWNDHND )
> {
> HWND hWnd;
> hWnd = FindWindow(NULL, hb_parc( 1 ));
> hb_retnl ((long) hWnd );
> }
>
> HB_FUNC( MOVEWNDHND )
> {
> MoveWindow(LongToHandle(hb_parnl( 1 )),hb_parnl( 2 ),hb_parnl( 3
> ),hb_parnl( 4 ),hb_parnl( 5 ),hb_parl( 6 ));
> }
>
> #pragma ENDDUMP
>
>
>
> //---------------------------------------------------------- -------------------
>
Incrustar notepad en un control
Publicado: Mar Ago 03, 2010 10:24 am
por jfgimenez
Joaquín,
> he adjuntado una imágen, el problema parece estar en intentar dar el
> foco al wordpad, pero a partir de ahí me pierdo.
>
> Si se pudiera anular que gonextcontrol() intentara posicionarse en ese
> control, debería funcionar.
>
> He probado ltabstop a .F. y también falla, sin embargo, con el notepad
> no falla y aparte, el foco vuelve correctamente al botón del Form.
El problema es que el wordpad no es un control, y mucho menos de Xailer. Y
lTabStop no se puede asignar para el wordpad, simplemente por esa razón. Por
favor, pon un pequeño ejemplo de cómo lo estás haciendo y le echaremos un
vistazo por si se pudiera hacer algo.
--
Un saludo,
José F. Giménez
http://www.xailer.com
http://www.xailer.info
Incrustar notepad en un control
Publicado: Jue Ago 12, 2010 8:43 am
por Bingen Ugaldebere
Pues definitivamente ha de ser un error del WordPad, yo lo tengo
comprobado con Word 2003 y funciona.
De todas maneras no se por que quieres meter el wordpad, pero con lo
simple que es puedes hacer lo mismo insertando un control tRichEdit con
una barra de botones, incluso puede leer y grabar los mismos documentos
que Wordpad y el control siempre es tuyo.
Salu2.
El 03/08/2010 10:06, "Joaquín Martínez." escribió:
> Gracias Bingen,
>
> Pero has probado tu ejemplo con una pantalla como la de mi imágen y el
> Wordpad ??
>
> Es decir, Creas un form con 3 Tedits por ejemplo, a continuación un
> TBevel e incrustas con tu clase en el TBevel el wordpad.
>
> Hasta ahí me funciona, luego, estando en el TEdit nº 1, vas avanzando
> con Tabular por los controles, cuando llegues al TEdit nº 3 y le des a
> tabular, a mí me da un GPF si es el WordPad, no si es el notepad o la
> calculadora.
>
> ¿Podrías comprobarlo?
>
> Un Saludo,
> Joaquín
>
>
> El 02/08/10 13:28, Bingen Ugaldebere escribió:
>> /*
>> * Proyecto: CapturarExes
>> * Fichero: Form1.prg
>> * Descripción:
>> * Autor:
>> * Fecha: 02/08/2010
>> */
>>
>> #include "Xailer.ch"
>>
>> CLASS TForm1 FROM TForm
>>
>> COMPONENT oScrollBox1
>> COMPONENT oScrollBox2
>>
>> METHOD CreateForm()
>> METHOD FormShow( oSender )
>>
>> ENDCLASS
>>
>> #include "Form1.xfm"
>>
>> //---------------------------------------------------------- --------------------
>>
>>
>> METHOD FormShow( oSender ) CLASS TForm1
>> Local nHandle,nHandle2
>>
>> Execute("Calc.exe")
>>
>> Sleep(1000)
>>
>> nHandle := GETWNDHND("Calculadora")
>> if nHandle != 0
>> Setpar(nHandle,::oScrollBox1:Handle)
>>
>> MoveWindow(nHandle,0,0,::oScrollBox1:nWidth,::oScrollBox1:nH eight,.t.)
>> else
>> MsgAlert("Imposible instanciar Calculadora")
>> endif
>>
>>
>>
>> nHandle2 := GETWNDHND("Xailer - CapturarExes")
>> if nHandle2 !=0
>> Setpar(nHandle2,::oScrollBox2:Handle)
>>
>> MoveWindow(nHandle2,0,0,::oScrollBox2:nWidth,::oScrollBox2:n Height,.t.)
>> else
>> MsgAlert("Imposible instanciar Xailer")
>> endif
>>
>>
>> RETURN Nil
>>
>> //---------------------------------------------------------- --------------------
>>
>> #pragma BEGINDUMP
>> #include "windows.h"
>> #include "xailer.h"
>>
>>
>> HB_FUNC( SETPAR )
>> {
>> HWND hWnd;
>> hWnd = SetParent( LongToHandle(hb_parnl( 1 )), LongToHandle(hb_parnl(
>> 2 )));
>> hb_retnl ( (long) hWnd );
>> }
>>
>> HB_FUNC( GETWNDHND )
>> {
>> HWND hWnd;
>> hWnd = FindWindow(NULL, hb_parc( 1 ));
>> hb_retnl ((long) hWnd );
>> }
>>
>> HB_FUNC( MOVEWNDHND )
>> {
>> MoveWindow(LongToHandle(hb_parnl( 1 )),hb_parnl( 2 ),hb_parnl( 3
>> ),hb_parnl( 4 ),hb_parnl( 5 ),hb_parl( 6 ));
>> }
>>
>> #pragma ENDDUMP
>>
>>
>>
>> //---------------------------------------------------------- -------------------
>>
>
Incrustar notepad en un control
Publicado: Vie Ago 13, 2010 1:31 pm
por buzonjmartial
Hola Bingen,
No es que quiera incrustar el wordpad, era una manera simple de explicar
el error, con el notepad NO, con el wordpad SI da un GPF.
Lo he puesto porque todo el mundo tiene esos 2 programas para probar.
La cuestión era ser capaz de incrustar cualquier ejecutable de otro
fabricante y saber por qué con Xailer algunos exe´s dan GPF y otros no.
He descubierto que es el GoNextControl(), pero tendría que ver como
modificarlo para que no dé el GPF.
Un Saludo,
Joaquín
El 12/08/10 8:43, Bingen Ugaldebere escribió:
> Pues definitivamente ha de ser un error del WordPad, yo lo tengo
> comprobado con Word 2003 y funciona.
>
> De todas maneras no se por que quieres meter el wordpad, pero con lo
> simple que es puedes hacer lo mismo insertando un control tRichEdit con
> una barra de botones, incluso puede leer y grabar los mismos documentos
> que Wordpad y el control siempre es tuyo.
>
> Salu2.
>
>
> El 03/08/2010 10:06, "Joaquín Martínez." escribió:
>> Gracias Bingen,
>>
>> Pero has probado tu ejemplo con una pantalla como la de mi imágen y el
>> Wordpad ??
>>
>> Es decir, Creas un form con 3 Tedits por ejemplo, a continuación un
>> TBevel e incrustas con tu clase en el TBevel el wordpad.
>>
>> Hasta ahí me funciona, luego, estando en el TEdit nº 1, vas avanzando
>> con Tabular por los controles, cuando llegues al TEdit nº 3 y le des a
>> tabular, a mí me da un GPF si es el WordPad, no si es el notepad o la
>> calculadora.
>>
>> ¿Podrías comprobarlo?
>>
>> Un Saludo,
>> Joaquín
>>
>>
>> El 02/08/10 13:28, Bingen Ugaldebere escribió:
>>> /*
>>> * Proyecto: CapturarExes
>>> * Fichero: Form1.prg
>>> * Descripción:
>>> * Autor:
>>> * Fecha: 02/08/2010
>>> */
>>>
>>> #include "Xailer.ch"
>>>
>>> CLASS TForm1 FROM TForm
>>>
>>> COMPONENT oScrollBox1
>>> COMPONENT oScrollBox2
>>>
>>> METHOD CreateForm()
>>> METHOD FormShow( oSender )
>>>
>>> ENDCLASS
>>>
>>> #include "Form1.xfm"
>>>
>>> //---------------------------------------------------------- --------------------
>>>
>>>
>>>
>>> METHOD FormShow( oSender ) CLASS TForm1
>>> Local nHandle,nHandle2
>>>
>>> Execute("Calc.exe")
>>>
>>> Sleep(1000)
>>>
>>> nHandle := GETWNDHND("Calculadora")
>>> if nHandle != 0
>>> Setpar(nHandle,::oScrollBox1:Handle)
>>>
>>> MoveWindow(nHandle,0,0,::oScrollBox1:nWidth,::oScrollBox1:nH eight,.t.)
>>> else
>>> MsgAlert("Imposible instanciar Calculadora")
>>> endif
>>>
>>>
>>>
>>> nHandle2 := GETWNDHND("Xailer - CapturarExes")
>>> if nHandle2 !=0
>>> Setpar(nHandle2,::oScrollBox2:Handle)
>>>
>>> MoveWindow(nHandle2,0,0,::oScrollBox2:nWidth,::oScrollBox2:n Height,.t.)
>>> else
>>> MsgAlert("Imposible instanciar Xailer")
>>> endif
>>>
>>>
>>> RETURN Nil
>>>
>>> //---------------------------------------------------------- --------------------
>>>
>>>
>>> #pragma BEGINDUMP
>>> #include "windows.h"
>>> #include "xailer.h"
>>>
>>>
>>> HB_FUNC( SETPAR )
>>> {
>>> HWND hWnd;
>>> hWnd = SetParent( LongToHandle(hb_parnl( 1 )),
>>> LongToHandle(hb_parnl(
>>> 2 )));
>>> hb_retnl ( (long) hWnd );
>>> }
>>>
>>> HB_FUNC( GETWNDHND )
>>> {
>>> HWND hWnd;
>>> hWnd = FindWindow(NULL, hb_parc( 1 ));
>>> hb_retnl ((long) hWnd );
>>> }
>>>
>>> HB_FUNC( MOVEWNDHND )
>>> {
>>> MoveWindow(LongToHandle(hb_parnl( 1 )),hb_parnl( 2 ),hb_parnl( 3
>>> ),hb_parnl( 4 ),hb_parnl( 5 ),hb_parl( 6 ));
>>> }
>>>
>>> #pragma ENDDUMP
>>>
>>>
>>>
>>> //---------------------------------------------------------- -------------------
>>>
>>>
>>