Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - Maurice_Lupin

#301
Bueno, digamos esta imagen


Ahora si hago click en la parte azul, obtendre un valor de 1 y si hago click en el rojo obtendré 2.
El asunto esta en detectar en que parte hice click. Lo que devuelva es más fácil de codificar  :)

Tengo una idea, pienso en hacer un mapa de bits de la imagen, utilizaria una matriz de enteros. Me pregunto hasta cuanta memoria podría utilizar como máximo.

Saludos.
#302
Una vez vi un programa que tenia una imagen y uno podia hacer click en distintas areas de la imagen y se obtenia un valor. Pero la imagen, ni las areas de la imagen eran cuadradas y menos redondas.

Existe algun boton u otro control que me permita hacer esto, en flash creo que se puede hacer, estoy buscando información para vb.net.

Saludos.
#304
Serializo y deserializo un objeto en un Proyecto1 sin ningun problema, pero cuando intento deserializar el objeto desde otro proyecto aún copiando la misma clase del objeto.
Me sale un error que dice: No se pudo encontrar el ensamblado 'Proyecto1,versión=1.0.4344.1002,culture=neutral,PublicKeyToken=null'

Parece que al guardar el objeto se crea esta especie de cabecera que referencia al proyecto que creo el archivo. Estoy intentando quitar esta cabecera, pienso que deberia poderse sobreescribiendo el metodo: Serealize.

Alguien tiene alguna idea. Agredezco los comentarios.  :xD

#305
hay controles para mandar a imprimir y deberian funcionarte. En todo caso podrias averiguar funciones de la API para imprimir, aqui te dejo una pagina http://pinvoke.net/ para que puedas invocar funciones de la API en vb.net, me ha servido mucho esa pag.

Saludos.
#306
Foro Libre / Animación Naruto rikudou
19 Noviembre 2011, 19:55 PM
se aceptan agravios...

canción: So Long Dear Friend by JETZT 
#307
Programación C/C++ / Seriales PenDrive DevC++ (SRC)
17 Noviembre 2011, 17:27 PM
Buscando código para VB.NET encontré esto, hice pequeñas modificaciones para que funcione en Dev C++ y googleando encontré la función Split, comparto el resultado

Hay que linkear: -lsetupapi
Código (cpp) [Seleccionar]


#include <windows.h>
#include <Setupapi.h>
#include <stdio.h>

static /*const*/ GUID hidGUID = { 0xA5DCBF10L, 0x6530, 0x11D2,
{ 0x90, 0x1F, 0x00, 0xC0, 0x4F, 0xB9, 0x51, 0xED } };

char **split ( char *string, const char sep) {

   char       **lista;
   char       *p = string;
   int         i = 0;

   int         pos;
   const int   len = strlen (string);

   lista = (char **) malloc (sizeof (char *));
   if (lista == NULL) {                      /* Cannot allocate memory */
       return NULL;
   }

   lista[pos=0] = NULL;

   while (i <len) {

       while ((p[i] == sep) && (i <len))
           i++;

       if (i <len) {

           char **tmp = (char **) realloc (lista , (pos + 2) * sizeof (char *));
           if (tmp == NULL) {       /* Cannot allocate memory */
               free (lista);
               return NULL;
           }
           lista = tmp;
           tmp = NULL;

           lista[pos + 1] = NULL;
           lista[pos] = (char *) malloc (sizeof (char));
           if (lista[pos] == NULL) {         /* Cannot allocate memory */
               for (i = 0; i <pos; i++)
                   free (lista[i]);
               free (lista);
               return NULL;
           }

           int j = 0;
           for (i; ((p[i] != sep) && (i <len)); i++) {
               lista[pos][j] = p[i];
               j++;

               char *tmp2 = (char *) realloc (lista[pos],(j + 1) * sizeof (char));
               if (lista[pos] == NULL) {     /* Cannot allocate memory */
                   for (i = 0; i <pos; i++)
                       free (lista[i]);
                   free (lista);
                   return NULL;
               }
               lista[pos] = tmp2;
               tmp2 = NULL;
           }
           lista[pos][j] = '\0';
           pos++;
       }
   }

   return lista;
}

HANDLE connectDeviceNumber(DWORD deviceIndex)
{
   //GUID hidGUID;  
   
   
   HDEVINFO hardwareDeviceInfoSet;
   SP_DEVICE_INTERFACE_DATA deviceInterfaceData;
   PSP_INTERFACE_DEVICE_DETAIL_DATA deviceDetail;
   ULONG requiredSize;
   HANDLE deviceHandle = INVALID_HANDLE_VALUE;
   DWORD result;

   //Get the HID GUID value - used as mask to get list of devices
   //HidD_GetHidGuid (&hidGUID);
   //hidGUID = new GUID(GUID GUID_DEVINTERFACE_USB_DEVICE);

   //Get a list of devices matching the criteria (hid interface, present)
   hardwareDeviceInfoSet = SetupDiGetClassDevs (&hidGUID,
                                                NULL, // Define no enumerator (global)
                                                NULL, // Define no
                                                (DIGCF_PRESENT | // Only Devices present
                                                DIGCF_DEVICEINTERFACE)); // Function class devices.

   deviceInterfaceData.cbSize = sizeof(SP_DEVICE_INTERFACE_DATA);

   //Go through the list and get the interface data
   result = SetupDiEnumDeviceInterfaces (hardwareDeviceInfoSet,
                                         NULL, //infoData,
                                         &hidGUID, //interfaceClassGuid,
                                         deviceIndex,
                                         &deviceInterfaceData);

   /* Failed to get a device - possibly the index is larger than the number of devices */
   if (result == FALSE)
   {
       SetupDiDestroyDeviceInfoList (hardwareDeviceInfoSet);
       printf("hidin: -- failed to get specified device number");
       return INVALID_HANDLE_VALUE;
   }

   //Get the details with null values to get the required size of the buffer
   SetupDiGetDeviceInterfaceDetail (hardwareDeviceInfoSet,
                                    &deviceInterfaceData,
                                    NULL, //interfaceDetail,
                                    0, //interfaceDetailSize,
                                    &requiredSize,
                                    0); //infoData))

   //Allocate the buffer
   deviceDetail = (PSP_INTERFACE_DEVICE_DETAIL_DATA)malloc(requiredSize);
   deviceDetail->cbSize = sizeof(SP_INTERFACE_DEVICE_DETAIL_DATA);

   //Fill the buffer with the device details
   if (!SetupDiGetDeviceInterfaceDetail (hardwareDeviceInfoSet,
                                         &deviceInterfaceData,
                                         deviceDetail,
                                         requiredSize,
                                         &requiredSize,
                                         NULL))
   {
       SetupDiDestroyDeviceInfoList (hardwareDeviceInfoSet);
       free (deviceDetail);
       printf("hidin: -- failed to get device info");
       return INVALID_HANDLE_VALUE;
   }

   char  **listSplit;

   listSplit = split(deviceDetail->DevicePath,'#');
   
   //printf("Opening device with path: %s", deviceDetail->DevicePath);
   printf("Serial: %s\n",listSplit[2] );
}

int main(int argc, char* argv[]) {
   connectDeviceNumber(0);
   
   getchar();
  return 0;
}

#308
Yo utilizo el IDE http://www.icsharpcode.net/OpenSource/SD/Default.aspx para programar en VB.Net. Casi lo mismo que el VB.net 2005. Sólo que no hay que pagar licencia, eso lei. Corrijanme si estoy equivocado.

Gracias a Hasseds.

En esta pagina encontre buena info para llamar a las funciones de la API en VB.NET
http://pinvoke.net/default.aspx/setupapi.SetupDiEnumDeviceInterfaces

Código (vbnet) [Seleccionar]


Imports System.Runtime.InteropServices
  <StructLayout(LayoutKind.Sequential, Pack := 1)> _
Public Structure DeviceInterfaceData
Public Size As Integer
Public InterfaceClassGuid As Guid
Public Flags As Integer
Public Reserved As Integer
End Structure

<StructLayout(LayoutKind.Sequential, Pack := 1)> _
Public Structure DeviceInterfaceDetailData
Public Size As Integer
<MarshalAs(UnmanagedType.ByValTStr, SizeConst := 256)> _
Public DevicePath As String
End Structure
   
   ' SetupDiGetClassDevs: Retorna información sobre el dispositivo
   <DllImport("setupapi.dll",EntryPoint:="SetupDiGetClassDevsW", SetLastError:=True, _
   CharSet:=CharSet.Unicode, ExactSpelling:=True, PreserveSig:=True, _
   CallingConvention:=CallingConvention.Winapi)> _
   Private Shared Function SetupDiGetClassDevs( _
   ByRef ClassGuid As GUID, _
   ByVal Enumerator As Integer, _
   ByVal hwndParent As Integer, _
   ByVal Flags As Integer) As Integer
   End Function    
     
 
  ' SetupDiDestroyDeviceInfoList
   <DllImport("setupapi.dll", _
   EntryPoint:="SetupDiDestroyDeviceInfoList", _
   SetLastError:=True, _
   ExactSpelling:=True, _
   PreserveSig:=True, _
   CallingConvention:=CallingConvention.Winapi)> _
   Private Shared Function SetupDiDestroyDeviceInfoList( _
   ByVal DeviceInfoSet As Integer) As Boolean
   End Function
 
   <DllImport("setupapi.dll", SetLastError := True)> _
Public Shared Function SetupDiEnumDeviceInterfaces(ByVal lpDeviceInfoSet As IntPtr, ByVal nDeviceInfoData As UInteger, ByRef gClass As Guid, ByVal nIndex As UInteger, ByRef oInterfaceData As DeviceInterfaceData) As Boolean
End Function

<DllImport("setupapi.dll", SetLastError := True)> _
Public Shared Function SetupDiGetDeviceInterfaceDetail(ByVal lpDeviceInfoSet As IntPtr, ByRef oInterfaceData As DeviceInterfaceData, ByVal lpDeviceInterfaceDetailData As IntPtr, ByVal nDeviceInterfaceDetailDataSize As UInteger, ByRef nRequiredSize As UInteger, ByVal lpDeviceInfoData As IntPtr) As Boolean
End Function

<DllImport("setupapi.dll", SetLastError := True)> _
Public Shared Function SetupDiGetDeviceInterfaceDetail(ByVal lpDeviceInfoSet As IntPtr, ByRef oInterfaceData As DeviceInterfaceData, ByRef oDetailData As DeviceInterfaceDetailData, ByVal nDeviceInterfaceDetailDataSize As UInteger, ByRef nRequiredSize As UInteger, ByVal lpDeviceInfoData As IntPtr) As Boolean
End Function    
   

' Funcion
Public Function FlashSerials() As String
  Dim TGUID As GUID
  Dim lCount       As UInt32
  Dim lSize        As Integer = &H0
  Dim DTL          As new DeviceInterfaceDetailData
  Dim DTA          As new DeviceInterfaceData
  Dim cad as String        
  TGUID = New Guid("{a5dcbf10-6530-11d2-901f-00c04fb951ed}")  
 
  Dim hDev As IntPtr = SetupDiGetClassDevs( TGUID, &H0 ,&H0, &H12)
 
  If hDev = -1 Then
  return "Nada"
  Exit Function
  End If  
 
  DTA.Size  = Marshal.SizeOf(DTA)
  DTL.Size = &H5  
  cad = ""
  lCount = 0
 
  While SetupDiEnumDeviceInterfaces(hDev, &H0, TGUID, lCount, DTA)
 
     If Not SetupDiGetDeviceInterfaceDetail(hDev, DTA, IntPtr.Zero , 0, lSize, IntPtr.Zero ) Then        
    If SetupDiGetDeviceInterfaceDetail(hDev, DTA, DTL , lSize, lSize, IntPtr.Zero) Then        
    If Ubound(Split(DTL.DevicePath ,"#"))>1 then
       cad = cad & Split(Ucase(DTL.DevicePath) ,"#")(2)  & chr(10)
    End If    
End If
 End if
     lCount = lCount + 1
  End while  
  SetupDiDestroyDeviceInfoList(hDev)
  If cad = "" Then cad = "No hay conexiones"  
  return cad
End Function



Es codigo lo encontre en
http://tempuzfugit.wordpress.com/2007/06/05/deteccion-de-insercion-de-disco/

Código (vbnet) [Seleccionar]

' Al sobreescribir este Metodo se puede detectar la acción de conectar/desconectar USB
Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message)

 'Se ha producido un cambio en los dispositivos
 Const deviceChange As Integer = &H219
 
 'El sistema detecta un nuevo dispositivo
 Const deviceArrival As Integer = &H8000
 
 'Dispositivo extraído del sistema
 Const deviceRemoveComplete As Integer = &H8004
 
 ' Volumen lógico (Se ha insertado un disco)
 Const deviceTypeVolume As Integer = &H2

 Select Case m.Msg
  'Cambian los dispositivos del sistema
  Case deviceChange
  Select Case m.WParam.ToInt32
  'Llegada de un dispositivo
 Case deviceArrival
   Dim devType As Integer = Marshal.ReadInt32(m.LParam, 4)
   'Si es un volumen lógico..(unidad de disco)
   If devType = deviceTypeVolume Then
  msgbox("Se inserto: " & FlashSerials())
 End If
 Case deviceRemoveComplete
 MessageBox.Show("Se retiró el dispositivo.")
 End Select
 End Select
 
 'Ahora se usa el manejador predeterminado
 MyBase.WndProc(m)
End Sub


#309
Muchas gracias Hasseds por todo, logre solucionar hoy en la madrugada. Voy a postear el codigo, también encontre como detectar cuando se conecta/desconecta un USB. Lo posteo aqui mismo?