DLL이있는 일부 하드웨어로 작업하고 있습니다. DLL 스파이 앱을 사용하여이 기능을 호출하는 두 가지 방법이 있다고 생각합니다.VB6/C++ WINAPI to C#
그것은 현재 VB6에서 지원되지 않는 다른 하드웨어를 사용할 수 있도록 2,010분의 2,008 C#에 이동하는
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))
내가 "강제"하고있어를 사용하여 VB6에서 작동합니다.
위의 내용을 사용하여 AccessViolationException
오류가 발생했습니다. 필자는 WinAPI 정의가있는 C++ 헤더 파일을 가지고 있지만 여전히 어려움을 겪고있는 "행운"입니다. 어떤 도움이라도 대단히 감사 할 것입니다.
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);
내 C# 지금까지 그것은 아마도 간단한 뭔가
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());
,하지만 난 (일부 데스크탑 프로그래밍 및 실버 만 수행) C# 언어에 비교적 새로운 해요.
는
한번 해보십시오. 고마워요 :) –
Legend! 고마워요! –
저는 명성이 없기 때문에 투표를 할 수 없지만, 자격이 있습니다! –