首页 > TAG信息列表 > IntPtr
使用C#编写一个.NET分析器(一)
译者注 这是在Datadog公司任职的Kevin Gosse大佬使用C#编写.NET分析器的系列文章之一,在国内只有很少很少的人了解和研究.NET分析器,它常被用于APM(应用性能诊断)、IDE、诊断工具中,比如Datadog的APM,Visual Studio的分析器以及Rider和Reshaper等等。之前只能使用C++编写,自从.NET Native记一次被非托管代码支配的恐惧「C#对接企微会话存档SDK问题修复」
序 这个问题是我目前在做企微服务商开发以来周期最长、最折磨人的一个问题了; 从3月开始着手排查问题(其实在开发之初就发现了该问题,迫于进度,就暂时搁置了),其中断断续续去尝试解决,并且没有企微对接人,只能社区咨询以及demo调试,加之期间需求不断,也就拖到了当下; 加之企微并没有提供C#对WPF中使用 WndProc 来处理Windows Messages
WPF对应的C#程序有时需要与Window32程序进行通信,会使用到窗口过程函数来接受Windows消息。 引入 System.Windows.Interop 命名空间,将使用到其中的 HwndSource 使用实例如下: // Add an event handler that receives all window messages, // 该函数的调用必须要当前程序的 MainWinFB(S1C1): PInvokeStackImbalance对PInvoke函数的调用导致堆栈不对称
FB(S1C1): PInvokeStackImbalance对PInvoke函数的调用导致堆栈不对称 问题: C#语言 对 C语言 导出函数进行调用时报出的错误. 方案: 设置调用约定CallingConvention的枚举值中的CallingConvention.Cdecl. 实施: C语言导出函数形式 extern "C" _使用C#制作可以录制自动化执行Windows操作脚本工具——类似于按键精灵
我们知道,如果要对一个网站进行自动化测试,可以使用Python的selenium对获取网页的元素进行一系列操作。同样,对于Windows应用,可以使用C#或者AutoIt(也是一种脚本语言,相比较与C#,AutoIt更适合做Windows应用的自动化脚本)捕获窗体句柄进行操作。 今天主要记录一下使用WPF制作可以录制自动Using PostMessage/SendMessage to send keys to c# IE WebBrowser
[DllImport("user32.dll")] [return: MarshalAs(UnmanagedType.Bool)] static extern bool PostMessage(IntPtr hWnd, uint msg, IntPtr wParam, IntPtr lParam); [DllImport("user32.dll")] static extern int SendMessage(IntPtr hWndC# Winform 使用全局快捷键
作者: 张赐荣 .NET 类库本身没有封装注册全局快捷键的函数,想要实现注册全局热键,就需要使用Win32API。 在WinAPI中,注册和注销全局快捷键分别通过registerhotkey和unregisterhotkey函数实现。 注册快捷键后,还需要重写窗口过程函数。 以下代码封装了全局快捷键注册功能 (在 Winform关于 uintptr_t和intptr_t 类型
简介 最近在看代码时,发现了两个之前没见过的数据类型:intptr_t,uintptr_t。这两个数据类型是ISO C99定义的,具体代码在linux平台的/usr/include/stdint.h头文件中。 /* Types for `void *' pointers. */ #if __WORDSIZE == 64 # ifndef __intptr_t_defined typedef long int intptrC# 抓取进程快照 propDump方式
private static void CreateMiniDump(string processName) { var pl = Process.GetProcessesByName(processName); if (pl.Length == 0) { Console.WriteLine($"找不到进程:{processName}"); retC# 判断文件是否被占用
using System.IO; using System.Runtime.InteropServices; namespace DarkBlue.FileOccupied { public sta class FileHlper { [DllImport("kernel32.dll")] public static extern IntPtr _lopen(string lpPathName, int iReadWrite);Bitmap 与ImageSource之间的转换
public class ImageConverter { [DllImport("gdi32.dll", SetLastError = true)] private static extern bool DeleteObject(IntPtr hObject); /// <summary> /// 从bitmap转换成ImageSource /// </summary&g.net delegate 万能适配
遇到一个技术点,记一下,.net 有一个 Delegate Marshall.GetDelegateForFunctionPointer(IntPtr ptr, Type t) 用来将内存地址映射为一个 delegate,转为 delegate 后就可以对内存段的二进制代码进行 .net 内的调用了。例如 ptr 是 VirtualAlloc 的地址,t 是具有 IntPtr(IntPtr lpStartAAMSI 浅析及绕过——写得很深入,看来amsi还是静态方式做的,没有做到运行时检测,检测的银弹在哪里呢,语义分析和机器学习吗?
AMSI 浅析及绕过 0x00 前言 0x01 AMSI浅析 1、什么是AMSI? AMSI(Antimalware Scan Interface),即反恶意软件扫描接口,在windows 10和 windows server 2016上默认安装并启用。顾名思义,他的工作就是扫描、检测和阻止。windows 10和windows server2016中AMSI默认杀软就是Windows DWinform中打开对应窗口标题的窗口
1 public static class WindowsMessageHelper 2 { 3 4 public const int WM_COPYDATA = 0x004A; 5 6 [DllImport("User32.dll", EntryPoint = "SendMessage")] 7 private static extern int SendMessageC#_动态获取鼠标位置的颜色
API声明: /// <summary> /// 获取指定窗口的设备场景 /// </summary> /// <param name="hwnd">将获取其设备场景的窗口的句柄。若为0,则要获取整个屏幕的DC</param> /// <returns>指定窗口的设备场景句柄,出错则为0</returns> [DllImport("user32.dll")] public staticC#-DWMAPI绘制缩略图到winform窗口 (多窗口图像捕获)
此文章演示C#如何使用DwmApi来捕获程序的缩略图来映射到winform窗体上。 实现: 1.可随意捕获多个程序的缩略图。 2.并可设置缩略图的大小尺寸。 3.零延迟实时捕获缩略图。 注意点: 使用此接口捕获应用程序的缩略图时,必须保证要捕获的应用程序在任务栏上出现。穿透 SESSION 0 隔离
注:这套程序在这里只是作为了解,博主本人并未测试,所有测试均来自文章最底层链接的原文章。 查看目标进程运行的SESSION位置 在实际开发过程中,可以通过Process Explorer 检查服务或程序处于哪个Session,会不会遇到Session 0 隔离问题。可以看到svchost.exe处于SESSION 0。QQ作为用户C#调用大华摄像头
大华SDK包地址:https://support.dahuatech.com/tools/sdkExploit 效果图: //32位SDK 大华摄像机打开方法 IntPtr _LoginID = IntPtr.Zero; NET_DEVICEINFO_Ex _DeviceInfo = new NET_DEVICEINFO_Ex(); IntPtr _PlayID = IntPtr.Zero;csharp: Cyotek.GhostScript.Pdf Conversion pdf convert image x64
NativeMethods.cs x64 using System; using System.Runtime.InteropServices; namespace Cyotek.GhostScript { /// <summary> /// 64位 /// https://github.com/kelter-antunes/Cyotek.GhostScript.x64 64位 /// </summary> internal classWPF 自定义文本框输入法 IME 跟随光标
本文告诉大家在 WPF 写一个自定义的文本框,如何实现让输入法跟随光标 本文非小白向,本文适合想开发自定义的文本框,从底层开始开发的文本库的伙伴。在开始之前,期望了解了文本库开发的基础知识 本文实现的效果如下 实现 本文的方法参考了 WPF 官方仓库的逻辑,可以在 WPF 仓库的 wpf\srlong 和 intptr_t
获取当前目录下的所有文件,用 _findfirst 在vs2013下好使,换成2018不行,后来考虑到2018默认是64位的 long-->intptr_t 后ok //文件句柄 //long hFile = 0; intptr_t hFile = 0; //文件信息 struct _finddata_t fileinfo; string p; if ((hFC#隐藏桌面图标
private void ShowDeskIcon(bool b)//控制桌面图标显隐 { IntPtr desk = FindWindow("ProgMan", null);//获取桌面句柄 IntPtr list_ = FindWindowEx(desk, 0, "SHELLDLL_DefView", null);//获取上级句柄 IntPtr Idesk = FindWindowEx(list_, 0, "Sys在WPF的程序中,嵌入其他进程的窗体
我最近遇到了这样一个问题,就是我的WPF程序中,需要用到32位的COM组件。所以我的WPF程序也是要32位的。但是32的程序的逻辑内存最多只有2G,因此,当这个COM组件比较吃内存的时候,程序就会出现内存不够的情况,就会出现异常。因此,我的解决方案是使用winform来调用这个COM组件。然后WPF程序C#中的IntPtr
1、C#中的IntPtr类型被称之为“平台特定的整数类型”,用于本机资源,例如窗口句柄。 2、资源的大小取决于使用的硬件和操作系统,即此类型的实例在32位硬件和操作系统中将是32位,在64位硬件和操作系统中将是64位;但其大小总是足以包含系统的指针(因此也可以包含资源的名称)。 3、在调用APIWinForm C# 获取屏幕真实分辨率
在上一篇文章(Winform C#截屏实现_学习记录专栏-CSDN博客)中,获取屏幕分辨率采取了折中的方法。然而在笔记本连接外接显示器,并且显示器显示模式扩展的情况下,获取到的屏幕分辨率就有会包含扩展屏,与目标机器的分辨率不符合。 网上继续搜索,才发现微软早提供了API获取的方