调试时候VS报了一个很奇怪的错误

Microsoft JScript 运行时错误: Sys.WebForms.PageRequestManagerParserErrorException: 无法分析从服务器收到的消息。之所以出现此错误,常见的原因是: 在通过调用 Response.Write() 修改响应时,将启用响应筛选器、HttpModule 或服务器跟踪。

这段代码好像没问题啊 换了个页面测试下OK的啊

asp.net的出现让本来很多分不清什么是服务器端什么是客户端的人更加迷茫了

这句话怎么看怎么别扭,少了一个分号吧?

大侠们!调用这个函数的作用是?该怎么调用?
.NET 里面经常调用的外部系统函数还有哪些?举例说明吧

DllImport 属性的常见用法。第一节讨论使用 DllImport 从托管应用程序调用本机代码的优点。第二节集中讨论封送处理和 DllImport 属性的各个方面。
从托管应用程序调用非托管代码
当在托管应用程序中重用现有的非托管代码时,DllImport 属性非常有用。例如,托管应用程序可能需要调用非托管 WIN32 API。
下面的代码示例说明此通用方案,此示例将调用 MessageBox(位于 User32.lib 中):

主要注意包含 DllImport 的代码行。此代码行根据参数值通知编译器,使之声明位于 User32.dll 中的函数并将签名中出现的所有字符串(如参数或返回值)视为 Unicode 字符串。如果缺少 EntryPoint参数,则默认值为函数名。另外,由于 CharSet 参数指定 Unicode,因此公共语言运行库将首先查找称为 MessageBoxW(有 W 是因为 Unicode 规范)的函数。如果运行库未找到此函数,它将根据调用约定查找 MessageBox 以及相应的修饰名。受支持的调用约定只有 __cdecl 和 __stdcall。
当调用用户定义的 DLL 中所包含的函数时,有必要将 extern "C" 添加在 DLL 函数声明之前,如下所示:
有关受支持的其他参数值的更多信息,请参见 DllImport。
将非结构化参数由托管封送处理为非托管
除使用上述方法外,还可以使用另一种方法将托管参数(来自托管应用程序)封送处理为非托管参数(在非托管 DLL 中)。

常用的还有"Kernel32.dll",也可以引入自己写的本机dll
有了dllimport可以方便的调用win32API

底层的有些dll文件c#是不能添加引用的 只有通过dllimport调用

是Windows用户界面相关应用程序接口,用于包括Windows处理,基本用户界面等特性,如创建窗口和发送消息
gdi32.dll是Windows GDI图形用户界面相关程序,包含的函数用来绘制图像和显示文字
控制着系统的内存管理、数据的输入输出操作和中断处理
微软就是靠这三个模块起家的
Windows SDK只利用这三个模块就能构建基本的Windows程序

另外,遇到这样的问题,可以先google搜索后,再问具体的。例如怎么调用某个函数等。

举个非常简单的例子说明,产品化的时候,一般都用加密狗的手段,但是想添加引用,或者使用加密狗中的算法或检测时,需要加载其光盘内带的DLL:Rockey3Com.dll,需要用运行regsvr32 注册,或者用[DllImport("Rockey3Com.dll")]的方法来自动注册,之后才可以使用的~一般都写在安装类里,或者程序启动,根据其DLL的标识来检测是否注册过。这样才可以使用的。
我知道的方法是必须得放在项目启动路径下,或sys32文件夹下,不需要写路径,就写名字可以直接注册的。

这完全就是 C# 这个 OO 调用 Native Methods 的不二法门啊。
当你想更自由地控制窗体的时候,就这么用。毕竟,上层封装给你的东西,是用起来方便,其实,你是受限的了。
来源:篮球殿堂

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值