Autor
|
Tema: Cojer texto de un control edit API (MASM) (Leído 7,694 veces)
|
Riki_89D
Desconectado
Mensajes: 851
BCN CITY
|
Hola k tal? como cojo el texto de un control edit con la API? trabajo en MAMS (Ensablador) intente con esto: invoke SendMessage,handle,WM_GETTEXT,offset Buffer,0
y nada i aisn tambin probe: invoke GetWindowText,handle,offset Buffer,0
y nada por que pasa no me sale nada por que?? este es el codde k llevo en mano:
WndProc proc han:HWND,msg2:UINT,wParam:WPARAM,lParam:LPARAM
.IF msg2 == WM_DESTROY invoke PostQuitMessage,0 .ELSEIF msg2 == WM_CREATE
invoke CreateWindowEx,NULL,offset Control1,NULL,\ WS_CHILD or WS_VISIBLE or WS_BORDER or ES_MULTILINE,\ 100,100,100,100,han,0,NULL,NULL
invoke CreateWindowEx,NULL,offset Control2,offset TxtBot,\ WS_CHILD or BS_DEFPUSHBUTTON or WS_VISIBLE,\ 100,30,100,40,han,IDM_BOT,NULL,NULL
.ELSEIF msg2 == WM_COMMAND .IF wParam == IDM_BOT
PUSH 0 PUSH 0 PUSH offset Buffer PUSH han CALL [MessageBox] .ENDIF
.ELSE
invoke DefWindowProc,han,msg2,wParam,lParam RET .ENDIF xor eax,eax ret
WndProc endp
end start
y aprovecho por preguntar algo que no tieen naa que ver con esto (asin ahorro un post nuevo) e estado mirando una web donde enseñan a hacer el hola mundo con ensamblador de 32 bits desde el arranque de la maquina,osea en modo real,i digo yo para hacer eso necesitas programar a 16 bits i no a 32 no????? si ando equivocado diganmelo,no es posible hacer eso en 32 bits no???,en la web la primera instruccion que ponian era "bits 16 ;Trabajamos a 16 bits",alguien me explica porfa ???? salu2
|
|
« Última modificación: 31 Diciembre 2009, 19:32 pm por Riki_89D »
|
En línea
|
|
|
|
MCKSys Argentina
|
Hola! Fíjate lo que dice la MSDN sobre esta API: GetWindowText The GetWindowText function copies the text of the specified window's title bar (if it has one) into a buffer. If the specified window is a control, the text of the control is copied. However, GetWindowText cannot retrieve the text of a control in another application.
int GetWindowText( HWND hWnd, // handle to window or control with text LPTSTR lpString, // address of buffer for text int nMaxCount // maximum number of characters to copy ); Parameters hWnd: Handle to the window or control containing the text. lpString: Pointer to the buffer that will receive the text. nMaxCount: Specifies the maximum number of characters to copy to the buffer, including the NULL character. If the text exceeds this limit, it is truncated. Si miras tu código, verás que el tercer parámetro debería ser la cantidad de caracteres que quieres copiar como máximo, y tu le estás poniendo 0... Osea, le estás diciendo que quieres leer 0 caracteres del edit. Aumentando ese parametro, solucionas la cosa... Saludos!
|
|
|
En línea
|
MCKSys Argentina "Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."
|
|
|
Riki_89D
Desconectado
Mensajes: 851
BCN CITY
|
osea que aisn estaria bien: ....
.data? Buffer db 32 dup(?) .. ..
...
WndProc proc han:HWND,msg2:UINT,wParam:WPARAM,lParam:LPARAM Local hand:HWND .IF msg2 == WM_DESTROY invoke PostQuitMessage,0 .ELSEIF msg2 == WM_CREATE
invoke CreateWindowEx,NULL,offset Control1,NULL,\ WS_CHILD or WS_VISIBLE or WS_BORDER or ES_MULTILINE,\ 100,100,100,100,han,0,NULL,NULL mov hand,eax
invoke CreateWindowEx,NULL,offset Control2,offset TxtBot,\ WS_CHILD or BS_DEFPUSHBUTTON or WS_VISIBLE,\ 100,30,100,40,han,IDM_BOT,NULL,NULL
.ELSEIF msg2 == WM_COMMAND .IF wParam == IDM_BOT
invoke GetWindowText,hand,offset Buffer,90 ;Pongo 90 por poner nu num
PUSH 0 PUSH 0 PUSH offset Buffer PUSH han CALL [MessageBox] .ENDIF
.ELSE
invoke DefWindowProc,han,msg2,wParam,lParam RET .ENDIF xor eax,eax ret
WndProc endp
end start
estaria bien asin ???? por que no me funciona :S
|
|
|
En línea
|
|
|
|
|
Riki_89D
Desconectado
Mensajes: 851
BCN CITY
|
Hola YST,gracias por contestar,en vez de 90 puse 25,desgraciadamente sigue sin funcionar,el mensaje no me mnuestra lo que escribo en el edit,no lo entiendo,se que una vez lo logre pero no me acuerdo:(
|
|
|
En línea
|
|
|
|
Saint Iker
|
Pon la variable hand global o si lo prefieres ( yo lo prefiero ) utiliza GetDlgItem para obtener el handle por el ID del control, no te saca el texto por que simplemente el handle no es valido ya que es una variable local que se pierde una vez procesado el mensaje WM_CREATE.
Salu2.
Att: Iker
|
|
|
En línea
|
|
|
|
Riki_89D
Desconectado
Mensajes: 851
BCN CITY
|
Hola iker,como ago para hacer la variable Hand como Global en vez de Local???
salu2 y gracias de antemano
|
|
|
En línea
|
|
|
|
YST
Desconectado
Mensajes: 965
I'm you
|
Hola iker,como hago para hacer la variable Hand como Global en vez de Local???
salu2 y gracias de antemano
.data? Buffer db 32 dup(?) hand dd ?
|
|
|
En línea
|
Yo le enseñe a Kayser a usar objetos en ASM
|
|
|
Saint Iker
|
Ya tienes de por si una variable global ( en el .data ) solo es agregar el hand como global. Salu2 Att: Iker
|
|
|
En línea
|
|
|
|
Riki_89D
Desconectado
Mensajes: 851
BCN CITY
|
Ok muchas gracias a todo,se me ocurrio ahcer esto: invoke FindWindow,0,offset Capt invoke FindWindowEx,eax,0,offset Control1,0 invoke GetWindowText,eax,offset Buffer,32
offset Capt = Cabecera de la ventana principal offset Control1 = Control1 db 'EDIT',0 me fue muy bien,me soluciono el problema ^^ por fin recorde como lo hice,muchas gracias por averme ayudado gracias a todos de verdad i un feliz año!!!!
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
¿Como obtener el texto de un control "EDIT" en C?
Programación C/C++
|
FMLTGRD
|
1
|
2,573
|
29 Noviembre 2014, 01:09 am
por Eternal Idol
|
|
|
Colorear sintaxis de código fuente en un edit-control, preferiblemente en C#.
.NET (C#, VB.NET, ASP)
|
pc51
|
1
|
2,642
|
7 Febrero 2016, 04:00 am
por Eleкtro
|
|
|
[MASM] ¿Cómo hacer que un DWORD con un texto se separe en varios objetos?
ASM
|
TheFerydra
|
2
|
2,829
|
21 Mayo 2018, 02:50 am
por TheFerydra
|
|
|
Enviar texto a Edit de ventana ajena
Ingeniería Inversa
|
aguml
|
5
|
3,543
|
4 Mayo 2020, 20:32 pm
por aguml
|
|
|
Cambiar los colores de un control edit
Programación C/C++
|
alienxz77b
|
4
|
5,877
|
18 Octubre 2021, 10:29 am
por Eternal Idol
|
|