Ich arbeite mit etwas Hardware, die eine DLL hat. Ich glaube, es gibt zwei Methoden zum Aufruf der Funktionalität (von der Verwendung einer DLL-Spion-App).VB6/C++ WINAPI zu C#
Es arbeitet zur Zeit in VB6
Public Type Versions
Pname As Long
Manuf As Long
VMajor As Long
VMinor As Long
VState As Long
End Type
Public Declare Function FLASH_GetVersion Lib "C:\flash_cntrl.dll" (ByVal fxc_Versions As Long) As Integer
Dim vVers As Versions
Dim strProdName As String
Dim strManuf As String
strProdName = " "
strManuf = " "
vVers.Manuf = StrPtr(strManuf)
vVers.Pname = StrPtr(strProdName)
iReturn = FLASH_GetVersion(VarPtr(vVers))
ich „gezwungen“ werden zu C# 2008/2010 der Lage sein, sich zu bewegen einige andere Hardware zu verwenden, die nicht in VB6 unterstützt wird.
Also, ich versuche, das oben genannte zu verwenden und in den AccessViolationException
Fehler zu laufen. Ich bin "glücklich" genug, um eine C++ - Header-Datei mit den WinAPI-Definitionen zu haben, aber immer noch zu kämpfen. Jede Hilfe würde sehr geschätzt werden.
typedef struct {
LPWSTR productname;
LPWSTR manufacturer;
unsigned Vers_Major;
unsigned Vers_Minor;
unsigned Vers_State; // = 0 released, > 0 internal use only
} FLASH_INFO;
int WINAPI FLASH_GetVersion (FLASH_INFO *fxc_Version);
Mein C# ist so weit
static class NativeMethods
{
[DllImport("C:\\flash_cntrl.dll")]
public static extern short FLASH_GetVersion(FLASH_INFO vVers);
}
public class FLASH_INFO
{
public string productname;
public string manufacturer;
public int Vers_Major;
public int Vers_Minor;
public int Vers_State;
}
FLASH_INFO vers = new FLASH_INFO();
string strManuf = " ";
string strProdName = " ";
vers.productname = strProdName;
vers.manufacturer = strManuf;
vers.Vers_Major = 0;
vers.Vers_Minor = 0;
vers.Vers_State = 0;
short sRet = NativeMethods.FLASH_GetVersion(vers);
Console.WriteLine("{0}|{1}", "sRet", sRet.ToString());
Es ist wahrscheinlich etwas einfach, aber ich bin relativ neu in der Sprache C# (nur einige Desktop-Programmierung und Silverlight getan).
Vielen Dank im Voraus
Will es versuchen. Danke :) –
Legende! Vielen Dank! –
Ich kann nicht wählen, weil ich nicht den Ruf habe, aber du verdienst es! –