elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Como proteger una cartera - billetera de Bitcoin


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  [SOLUCIONADO] Agregar item a combo (API)
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [SOLUCIONADO] Agregar item a combo (API)  (Leído 7,538 veces)
elmaro


Desconectado Desconectado

Mensajes: 301


Unas simples palabras...


Ver Perfil
[SOLUCIONADO] Agregar item a combo (API)
« en: 12 Enero 2010, 14:39 pm »

Buenas, estoy con esa duda. Tengo una aplicación a la que tengo que agregarle unos datos mas al combo (tengo que agregarle años, ya que se quedo corto y es una app vieja) y quisiera saber como agregarle un item. El buscar el Combo no me preocupa, me preocupa mas como agregar el item. Se hace con sendmessage no?

Dejo algunas funciones que voy a usar, quisas a alguien mas le sirven.

Código:
    <DllImport("user32.dll", SetLastError:=True, CharSet:=CharSet.Auto)> _
Private Shared Function FindWindow( _
     ByVal lpClassName As String, _
     ByVal lpWindowName As String) As IntPtr
    End Function

    <DllImport("user32.dll", EntryPoint:="FindWindow", SetLastError:=True, CharSet:=CharSet.Auto)> _
    Private Shared Function FindWindowByClass( _
         ByVal lpClassName As String, _
         ByVal zero As IntPtr) As IntPtr
    End Function

    <DllImport("user32.dll", EntryPoint:="FindWindow", SetLastError:=True, CharSet:=CharSet.Auto)> _
    Private Shared Function FindWindowByCaption( _
         ByVal zero As IntPtr, _
         ByVal lpWindowName As String) As IntPtr
    End Function

    <DllImport("user32.dll", SetLastError:=True, CharSet:=CharSet.Auto)> _
Private Shared Function FindWindowEx(ByVal parentHandle As IntPtr, _
                      ByVal childAfter As IntPtr, _
                      ByVal lclassName As String, _
                      ByVal windowTitle As String) As IntPtr
    End Function

    <DllImport("user32.dll", SetLastError:=True, CharSet:=CharSet.Auto)> _
Private Shared Function SendMessage(ByVal hWnd As IntPtr, ByVal Msg As UInteger, ByVal wParam As IntPtr, ByVal lParam As IntPtr) As IntPtr
    End Function

Gracias
Mariano


Edit:
Me tope con un problema. Al usar la funcion GetChildWindows de una ventana, no me devuelve el valor de los ComboBox, justamente los que necesito y del resto de los controles si.
Usando el WinID puedo sacar el handle del control, pero esa no es la idea.

Estoy atento a cualquier sugerencia.



« Última modificación: 14 Enero 2010, 18:39 pm por elmaro » En línea

seba123neo


Desconectado Desconectado

Mensajes: 3.621



Ver Perfil WWW
Re: Agregar item a combo (API)
« Respuesta #1 en: 13 Enero 2010, 04:11 am »

Hola, si se hace con SendMessage y con el mensaje CB_ADDSTRING.

Código
  1. Private Const CB_ADDSTRING = &H143

y para agregar seria:

Código
  1. SendMessage handleDelCombo, CB_ADDSTRING, 0, ByVal "Hola"

saludos.


En línea

elmaro


Desconectado Desconectado

Mensajes: 301


Unas simples palabras...


Ver Perfil
Re: Agregar item a combo (API)
« Respuesta #2 en: 13 Enero 2010, 14:40 pm »

Seba123neo podrias pasarme la declaracion correcta a usar de SendMessage si la tenes por ahi?
Porque me da "La conversion especificada no es valida"

Las saque de:
http://www.pinvoke.net/default.aspx/user32.SendMessage

Saludos!

Edito:
Si lo pruebo en un combo dentro de mi formulario(para verificar que al menos funcione) me salta un error de "Intento de leer o escribir en la memoria protegida. A menudo, esto indica que hay otra memoria dañada"
:S
« Última modificación: 13 Enero 2010, 14:54 pm por elmaro » En línea

seba123neo


Desconectado Desconectado

Mensajes: 3.621



Ver Perfil WWW
Re: Agregar item a combo (API)
« Respuesta #3 en: 14 Enero 2010, 00:45 am »

claro, te explico, el tema es que hay 2 tipos de declaraciones de SendMessage, una para mandar Stringsy la otra Long(integers en .NET).

en visual basic 6 cuando querias usar las 2 debias delarar las api's con diferentes nombres y cambiando el tipo de dato del ultimo parametro de la api. por eso veras por ahi nombres como SendMessageSTRING o SendMessageLONG.

visual basic 6 en el ultimo parametro se usaba AS Any, aca en .NET cuando queres mandar un mensaje con valor String debes poner en el ultimo parametro As String, y cuando quieras mandar un valor Integer, pones As Integer, podes declarar las 2 api's al mismo tiempo, total el .NET hace automaticamente sobrecarga de funciones, y entonces cuando mandes un string automaticamente va a usar la api que tenga como ultimo parametro String, igual para la de Integer...

Para Integer:

Código
  1. <System.Runtime.InteropServices.DllImport("user32.DLL")> _
  2. Private Shared Function SendMessage( _
  3.        ByVal hWnd As System.IntPtr, ByVal wMsg As Integer, _
  4.        ByVal wParam As Integer, ByVal lParam As Integer _
  5.        ) As Integer
  6. End Sub

Para String:

Código
  1. <System.Runtime.InteropServices.DllImport("user32.DLL")> _
  2. Private Shared Function SendMessage( _
  3.        ByVal hWnd As System.IntPtr, ByVal wMsg As Integer, _
  4.        ByVal wParam As Integer, ByVal lParam As String _
  5.        ) As Integer
  6. End Sub

saludos.


En línea

elmaro


Desconectado Desconectado

Mensajes: 301


Unas simples palabras...


Ver Perfil
Re: Agregar item a combo (API)
« Respuesta #4 en: 14 Enero 2010, 01:34 am »

Gracias!! Acabo de probarlo con en una aplicacion mia y funciono! Mañana la pruebo en la app que necesito y comento.
El problema estaba en el tipo de dato, mira vos. Habia visto una con StringBuilder y me daba un error raro. En fin, gracias!

Atte.
Mariano Malomo


Edit:
Y ya que estamos en el tema, de donde puedo sacar los valores de las constantes para otras acciones para este control y otros? Seria de gran utilidad
« Última modificación: 14 Enero 2010, 03:14 am por elmaro » En línea

seba123neo


Desconectado Desconectado

Mensajes: 3.621



Ver Perfil WWW
Re: Agregar item a combo (API)
« Respuesta #5 en: 14 Enero 2010, 03:46 am »

de internet jeje  ;D, aca todas los mensajes para combobox:

Código
  1.    Public Const CB_GETEDITSEL As Integer = &H140
  2.    Public Const CB_LIMITTEXT As Integer = &H141
  3.    Public Const CB_SETEDITSEL As Integer = &H142
  4.    Public Const CB_ADDSTRING As Integer = &H143
  5.    Public Const CB_DELETESTRING As Integer = &H144
  6.    Public Const CB_DIR As Integer = &H145
  7.    Public Const CB_GETCOUNT As Integer = &H146
  8.    Public Const CB_GETCURSEL As Integer = &H147
  9.    Public Const CB_GETLBTEXT As Integer = &H148
  10.    Public Const CB_GETLBTEXTLEN As Integer = &H149
  11.    Public Const CB_INSERTSTRING As Integer = &H14A
  12.    Public Const CB_RESETCONTENT As Integer = &H14B
  13.    Public Const CB_FINDSTRING As Integer = &H14C
  14.    Public Const CB_SELECTSTRING As Integer = &H14D
  15.    Public Const CB_SETCURSEL As Integer = &H14E
  16.    Public Const CB_SHOWDROPDOWN As Integer = &H14F
  17.    Public Const CB_GETITEMDATA As Integer = &H150
  18.    Public Const CB_SETITEMDATA As Integer = &H151
  19.    Public Const CB_GETDROPPEDCONTROLRECT As Integer = &H152
  20.    Public Const CB_SETITEMHEIGHT As Integer = &H153
  21.    Public Const CB_GETITEMHEIGHT As Integer = &H154
  22.    Public Const CB_SETEXTENDEDUI As Integer = &H155
  23.    Public Const CB_GETEXTENDEDUI As Integer = &H156
  24.    Public Const CB_GETDROPPEDSTATE As Integer = &H157
  25.    Public Const CB_FINDSTRINGEXACT As Integer = &H158
  26.    Public Const CB_SETLOCALE As Integer = 345
  27.    Public Const CB_GETLOCALE As Integer = 346
  28.    Public Const CB_GETTOPINDEX As Integer = 347
  29.    Public Const CB_SETTOPINDEX As Integer = 348
  30.    Public Const CB_GETHORIZONTALEXTENT As Integer = 349
  31.    Public Const CB_SETHORIZONTALEXTENT As Integer = 350
  32.    Public Const CB_GETDROPPEDWIDTH As Integer = 351
  33.    Public Const CB_SETDROPPEDWIDTH As Integer = 352
  34.    Public Const CB_INITSTORAGE As Integer = 353
  35.    Public Const CB_MSGMAX As Integer = 354

esta pagina es buena:

Mensaje CB_ADDSTRING

y esta tambien:

CB_ (Constants)

saludos.
En línea

elmaro


Desconectado Desconectado

Mensajes: 301


Unas simples palabras...


Ver Perfil
Re: Agregar item a combo (API)
« Respuesta #6 en: 14 Enero 2010, 14:25 pm »

Funciono de maravillas en donde quería.
Gracias por las constantes

Saludos
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Saber si se selecciono algun item de un combo
Desarrollo Web
diego_lp 4 5,410 Último mensaje 21 Diciembre 2010, 19:18 pm
por Shell Root
(Solucionado) Agregar seguridad a Guestbook
PHP
2Fac3R 3 3,455 Último mensaje 26 Enero 2012, 23:11 pm
por 2Fac3R
(Solucionado) Como darle focus a un item al abrir el form
.NET (C#, VB.NET, ASP)
Eleкtro 7 6,518 Último mensaje 23 Noviembre 2012, 11:41 am
por Eleкtro
Datagridview agregar columna con combo box(SOLUCIONADO)
Programación Visual Basic
01munrra 1 6,682 Último mensaje 3 Abril 2016, 21:23 pm
por 01munrra
agregar un Item Fecha a una Lista prehecha
.NET (C#, VB.NET, ASP)
llogui 0 1,670 Último mensaje 15 Septiembre 2016, 00:36 am
por llogui
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines