VS_C#2008中System.Runtime.InteropServices空间下找不到SystemParametersInfo方法

VS_C#2008中System.Runtime.InteropServices空间下找不到SystemParametersInfo方法,第1张

using System.Runtime.InteropServices

//声明函数 SystemParametersInfo 两个重载版本

[DllImport("user32.dll", EntryPoint = "SystemParametersInfo", CharSet = CharSet.Auto)]  

public static extern int GetSystemParametersInfo(int uAction, int uParam, out int lpvParam, int fuWinIni)    

[DllImport("user32.dll", EntryPoint = "SystemParametersInfo", CharSet = CharSet.Auto)]  

public static extern int SetSystemParametersInfo(int uAction, int uParam, int lpvParam, int fuWinIni)

参考:http://blog.csdn.net/keep_silence_/article/details/7850247

你的dll应该是缺少导出函数吧。

我给你一个例子:

dll工程:

//dll.h

extern "C" int __declspec(dllexport) add(int,int)

//dll.cpp

#include <windows.h>

#include "dll.h"

BOOL APIENTRY DllMain(HANDLE hModule,

DWORD ul_reason_for_call,

LPVOID lpReserved)

{

switch(ul_reason_for_call)

{

case DLL_PROCESS_ATTACH:

case DLL_THREAD_ATTACH:

case DLL_THREAD_DETACH:

case DLL_PROCESS_DETACH:

break

}

return TRUE

}

int add(int a,int b)

{

return a+b

}

exe工程:

//main.cpp

#include <windows.h>

#include <iostream>

#include <tchar.h>

using namespace std

int main()

{

HINSTANCE hDll//dll 句柄

hDll=LoadLibrary(TEXT("win.dll"))//加载dll

cout<<hDll<<endl

typedef int(* lpAddFun)(int,int)//宏定义函数指针类型

typedef int(* lpSubFun)(int,int)

lpAddFun addFun//函数指针

lpSubFun subFun

int * num

if(hDll!=NULL) //判断dll加载是否成功

{

addFun=(lpAddFun)GetProcAddress(hDll,"add")//获取想要引入的函数以及变量

subFun=(lpAddFun)GetProcAddress(hDll,"sub")

num=(int *)GetProcAddress(hDll,"num")

if(num!=NULL)

{

printf("%d\n",* num)

}

if(addFun!=NULL)

{

int result=addFun(3,2)

printf("3+2=%d\n",result)

}

if(subFun!=NULL)

{

int result=subFun(3,2)

printf("3-2=%d\n",result)

}

FreeLibrary(hDll)//卸载dll

}

return 0

}

如果还是不明白,我给你发vs2008下的源代码。

如果是Windows

9x/Me系统中,屏蔽Ctrl+Alt+Del和各种任务开关键的方法是通过下面的方法实现的:

Const

SPI_SCREENSAVERRUNNING

=

97

Private

Declare

Function

SystemParametersInfo

Lib

"user32"

Alias

_

"SystemParametersInfoA"

(ByVal

uAction

As

Long,

ByVal

uParam

As

Long,

_

lpvParam

As

Any,

ByVal

fuWinIni

As

Long)

As

Long

Dim

pOld

As

Boolean

Call

SystemParametersInfo(SPI_SCREENSAVERRUNNING,

True,

pOld,

0)

如果是NT/2000,则非常复杂,似乎连系统钩子都不能解决,而需要采取代码注入、远程线程等手段(这些手段也是一些病毒、木马喜欢采用的)。以下有篇文章可以参考:

http://www.vbgood.com/viewthread.php?tid=39955


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/7902528.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-11
下一篇2023-04-11

发表评论

登录后才能评论

评论列表(0条)

    保存