我试图通过Delphi中的USB端口连接到Graphtec绘图仪.以下是C++代码的snipet由制造商提供:
#include <windows.h>
#include <stdio.h>
typedef HANDLE (APIENTRY *PROC_GITK_OPENUSB)(int, int, DWORD);
int main(int argc, char* argv[])
{
HMODULE hUsbLib = LoadLibrary("GITKUSBP.DLL");
PROC_GETK_OPENUSB lpfnGITK_OpenUsb = (PROC_GITK_OPENUSB)GetProcAddress(hUsbLib, "GITK_OpenUsb");
HANDLE hWrite = (lpgnGITK_OpenUsb)(0, 0, FILE_FLAG_OVERLAPPED);
HANDLE hRead = (lpgnGITK_OpenUsb)(0, 1, FILE_FLAG_OVERLAPPED);
OVERLAPPED WriteEvt, ReadEvt;
}
Run Code Online (Sandbox Code Playgroud)
当然,还有更多内容,但这似乎是关键代码.在Delphi中,我尝试翻译并不成功.我要么需要一些翻译专业知识,要么将C++代码转换成我可以从Delphi调用的dll的一些指导.
好吧,所以首先我已经在项目中设置了我正在使用dll的引用.我想要做的是访问我的utils dll中的方法"haha"
dll的代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;
namespace Utils
{
public class kb
{
public class yes {
public void haha(string yes)
{
int test = Convert.ToInt32(yes);
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
在我试图访问哈哈的项目我只有"Utils.kb.yes",但没有方法...我所能做的就是Utils.kb.yes.equals和Utils.kb.yes.ReferenceEquals.
我正在编写一个程序,从我的服务器下载文件(dll)并使用此文件.但是,当下载完成后,我的防病毒软件(卡巴斯基)会使用Constructor.Win32.Downldr.xr检测我的文件.我怎么解决这个问题?
但是,我将我的2个文件放在www.virustotal.com上,并且都没有病毒.
注意:这两个文件(进行下载的程序和文件,即dll)是在Delphi 7中创建的.
我是.NET应用程序开发的新手.涉及一个项目,有三个模块,如接口层,业务层和数据层; 我建了这些,我得到了.dll文件.
但是我丢失了一个.dll文件的源代码.
我想提取.dll并获得相同的源代码.是否可以从.dll文件中提取我的源代码?
有以下C#代码用于加载和卸载C++ DLL.
我只加载DLL一次,但代码必须卸载DLL 2次.在卸载DLL之后,当我再次加载它,并且我调用DLL的导出函数时,我收到以下错误消息:
尝试读取或写入受保护的内存.这通常表明其他内存已损坏.
DLL依赖于其他DLL.
/// //////////////handle of FDD DLL:
System.IntPtr SystemIntPtr_handle_of_DLL=System.IntPtr.Zero;
private void button4_Click(object sender, EventArgs e)
{
try
{
string string_Dependency_path = ".\\DLL_Dependencies\\";
Call_DLL.SetDllDirectory(string_Dependency_path);
SystemIntPtr_handle_of_DLL = Call_DLL.LoadLibrary("DLL.dll");
if (SystemIntPtr_handle_of_DLL == System.IntPtr.Zero) { throw new Exception("DLL did not load"); }
}
catch (Exception Exception_Object) { MessageBox.Show(Exception_Object.Message); }
}
private void button5_Click(object sender, EventArgs e)
{
try
{
int int_FreeLibrary_counter = 0;
while (Call_DLL.FreeLibrary(SystemIntPtr_handle_of_DLL))
{
int_FreeLibrary_counter++;
}
MessageBox.Show("DLL unloaded. You will have to load it again. (Unloaded" + int_FreeLibrary_counter …Run Code Online (Sandbox Code Playgroud) 我试图将 dll 注入到进程中,但编译后我得到了
TestMain.obj : error LNK2019: link to unresolved external symbol __imp__StrStrIA@8 in function "unsigned long __cdecl GetPid(char *)" (?GetPid@@YAKPAD@Z). 经过多年尝试在代码中找到我的问题并尝试用谷歌搜索它,并与少林僧人一起冥想,我失败了。这是我的代码:
#include <windows.h>
#include <stdio.h>
#include <tlhelp32.h>
#include <shlwapi.h>
#include <iostream>
#include <conio.h>
using namespace std;
#define CREATE_THREAD_ACCESS (PROCESS_CREATE_THREAD | PROCESS_QUERY_INFORMATION | PROCESS_VM_OPERATION | PROCESS_VM_WRITE | PROCESS_VM_READ)
bool IsWindowsNT()
{
// check current version of Windows
DWORD version = GetVersion();
// parse return
DWORD majorVersion = (DWORD)(LOBYTE(LOWORD(version)));
DWORD minorVersion = (DWORD)(HIBYTE(LOWORD(version)));
return (version < 0x80000000);
}
BOOL InjectDLL(DWORD …Run Code Online (Sandbox Code Playgroud) 如果我在Windows,Linux或Mac中使用C或C++库,有没有办法知道它导出的函数和数据结构及其签名而没有此库的文档?
所以,我试图从Delphi XE2中的DLL调用一个过程.但程序不会分配.
我试过在互联网上找到几个例子.正在按预期加载DLL.导出正确写入.
一切似乎都很好,但仍然没有成功.
怎么了?
我的代码如下
type
TStarter = procedure; stdcall;
...
fTheHookStart: TStarter;
...
procedure TForm1.LoadHookDLL;
begin
LogLn('Keyboard Hook: Loading...');
// Load the library
DLLHandle := LoadLibrary('thehookdll.DLL');
// If succesful ...
if Handle <> 0 then
begin
LogLn('Keyboard Hook: DLL load OK!');
LogLn('Keyboard Hook: assigning procedure ...');
fTheHookStart := TStarter(GetProcAddress(DLLHandle, 'StartTheHook'));
if @fTheHookStart <> nil then
begin
LogLn('Keyboard Hook: procedure assignment OK!');
LogLn('Keyboard Hook: Starting...');
fTheHookStart;
end
else
begin
LogLn('Keyboard Hook: procedure assignment FAIL!');
FreeLibrary(DLLHandle);
if Handle <> 0 …Run Code Online (Sandbox Code Playgroud) using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace EyesLib
{
class Class1
{
public void drawEyes(int lookAtX, int lookAtY, int width, int height, Graphics eyeArea)
{
int xleft = 0, yleft = 0, xright = 0, yright = 0, xpleft = 0, ypleft = 0, xpright = 0, ypright = 0, reye = 0, rpupil = 0;
xleft = width / 3;
yleft = height / 2;
xright = 2 * width / 3;
yright …Run Code Online (Sandbox Code Playgroud)