Ver Mensaje Individual
  #1 (permalink)  
Antiguo 07/02/2008, 01:58
miguelajh
 
Fecha de Ingreso: julio-2006
Ubicación: En algún lugar de un grán pais
Mensajes: 112
Antigüedad: 17 años, 10 meses
Puntos: 2
equivalencias c# vs VB.net

Saludos.
Pues estoy haciendo un control de captura de imagen por webcam, y luego la imagen la "decodifico" a texto para poder almacenarla en mi base de datos pero como texto...
BUeno, la idea hasta ahi bien.
El control lo estoy haciendo en c#

Pero me ha surgido varios problemas.
Para esto uso algunas apis para obtener la imagen, y esto en VB.net 2005 me va excelente, las apis son estas:

Public Declare Function SendMessage Lib "USER32" Alias "SendMessageA" (ByVal hwnd As Integer, ByVal wMsg As Integer, ByVal wParam As Integer, ByRef lParam As String) As Integer
Public Declare Function SendMessage Lib "USER32" Alias "SendMessageA" (ByVal hwnd As Integer, ByVal wMsg As Integer, ByVal wParam As Integer, ByRef lParam As Integer) As Integer
Public Declare Function SendMessage Lib "USER32" Alias "SendMessageA" (ByVal hwnd As Integer, ByVal wMsg As Integer, ByVal wParam As Integer, ByRef lParam As Long) As Integer
Public Declare Function capCreateCaptureWindow Lib "avicap32.dll" Alias "capCreateCaptureWindowA"(ByVal lpszWindowName As String, ByVal dwStyle As Integer, ByVal X As Integer, ByVal Y As Integer, ByVal nWidth As Integer, ByVal nHeight As Integer, ByVal hwndParent As Integer, ByVal nID As Integer) As Integer

y si las convierto a su "nemesis" en c# mequedan asi:


[DllImport("avicap32.dll", EntryPoint = "capCreateCaptureWindowA")]//,CallingConvention=CallingConvention.Winapi)]
public static extern int capCreateCaptureWindow (string lpszWindowName, int dwStyle, int X,int Y , int nWidth, int nHeight , IntPtr hwndParent, int nID );

[DllImport("USER32.dll", EntryPoint = "SendMessageA")]//, CallingConvention = CallingConvention.Winapi)]
public static extern int SendMessage (int hwnd ,int wMsg , int wParam ,Int64 lParam);

Bueno, hasta aqui bien, el problema es cuando ejecuto con lo siguiente:
mCapHwnd = ApiWebCam.MgsWinAPI.capCreateCaptureWindow("Webcam Captura", 0, 0, 0, 320, 240, (this.Handle), 0);
///intp
//Connect to capture device
System.Windows.Forms.Application.DoEvents();
ApiWebCam.MgsWinAPI.SendMessage(mCapHwnd, CONNECT, 0, 0);

(todo està en una clase con una namespace ApiWebCam, la clase se llama MgsWinAPI.
Me dice lo siguiente:

PInvokeStackImbalance was detected
Message: Una llamada a la función PInvoke 'ctrlCapturarImagencs!ApiWebCam.MgsWinAPI::SendMes sage' impidió la correspondencia de la pila. Es posible que la razón sea que la firma PInvoke administrada no coincida con la firma de destino no administrada. Compruebe que la convención y los parámetros de llamada de la firma PInvoke coinciden con la firma no administrada de destino.

Peeeero si se dan cuenta es exactamente igual lo de Vb que lo de C# no se si sea otra cosa o que pex....


alguien que me pueda ayudar?....


Otro caso es que en mi mixmo proyecto, la imagen obtenida en vb.net la paso al portapapeles, pero no la puedo pasa en c#
el codigo es asi:

picOutput.Image = My.Computer.Clipboard.GetImage()

esto funciona en VB pero en C# no!!!!!!
alguien me puede auxiliar?...
gracias.