草庐IT

rb_define_hooked_variable

全部标签

c# - 有没有办法在 C# 中 Hook 托管函数,就像在 C++ 中 Hook 非托管函数一样?

在C++中,我会获取函数的地址并将前几个字节覆盖为我的函数的jmp,做一些事情,恢复原始字节,然后调用原始函数。我可以在C#中做这样的事情吗? 最佳答案 .NETProfilerAPI是最接近“Microsoft认可”的运行时拦截方法的方法。如前所述,这有点难以实现,而且我不知道有哪个库可以使用纯托管代码轻松实现这一点。几个月前,当我自己研究这个选项时,我偶然发现了CLRMethodInjection,这是一篇带有源代码的文章,解释了如何在运行时拦截方法。我考虑过自己使用它,甚至让示例项目运行起来,但最终得出结论,我需要的不仅仅是方

c# - Expression.Variable() 和 Expression.Parameter() 有什么区别?

两者似乎都返回相同的类型,并且具有相同的签名。那么它们之间有什么区别,我们应该在什么时候使用它们? 最佳答案 Expression.Variable用于在block中声明局部变量。Expression.Parameter用于声明传入值的参数。目前C#不允许使用语句主体的lambda表达式,但如果它允许,想象一下://Notcurrentlyvalid,admittedly...Expression>foo=x=>{inty=DateTime.Now.Hour;returnx+y;};如果此有效,C#编译器将使用Expression.

c# - Visual Studio 2015 中是否有用于 C# 的 "Go To Variable Type Declaration"函数或一个免费插件?

voidMagicalFunction(MagicalTypemagic){...magic.Poof("something");...varfoo=magic.GetFoo();...}在变量magic上按下热键将导航到类型MagicalType的定义。在foo上按下热键将转到类型Foo的定义,由于类型推断,它在这里不直接可见。Resharper插件具有此功能(称为GoToTypeofSymbol),但是是否有内置的替代方案或免费扩展来执行此操作? 最佳答案 右键单击“var”关键字,从上下文菜单中选择“Gotodefinitio

c# - 如何在 C# 中使用低级键盘钩子(Hook)来抑制任务切换键(winkey、alt-tab、alt-esc、ctrl-esc)

谁能告诉我如何使用C#禁用任务切换键 最佳答案 我有完整的代码来禁用Windows键,Alt+Tab等等..现在我提供以下代码供其他人引用:/*CodetoDisableWinKey,Alt+Tab,Ctrl+EscStartsHere*///Structurecontaininformationaboutlow-levelkeyboardinputevent[StructLayout(LayoutKind.Sequential)]privatestructKBDLLHOOKSTRUCT{publicKeyskey;publicin

c# - "The binary operator Add is not defined for the types ' System.String ' and ' System.String '."-- 真的吗?

尝试运行以下代码时:Expression>stringExpression=Expression.Lambda>(Expression.Add(stringParam,Expression.Constant("A")),newList(){stringParam});stringAB=stringExpression.Compile()("B");我收到标题中提到的错误:“二元运算符Add没有为类型‘System.String’和‘System.String’定义。”真的是这样吗?显然在C#中它有效。在C#中执行strings="A"+"B"是表达式编译器无法访问的特殊语法糖吗?

c# - variable.ToString() 与 Convert.ToString(variable)

假设我有一个整数需要转换为字符串(例如,我可能通过文本框向用户显示值。我应该选择.ToString()还是Convert.ToString()。他们都做同样的事情(不是吗?)。intsomeValue=4;//YoucandothistxtSomeValue.Text=someValue.ToString();//Orthis...txtSomeValue.Text=Convert.ToString(someValue);假设两者之间没有运行时差异,那么我的理由归结为美观和一致性。最近我一直偏爱Convert.ToString(),因为它对我说“嘿,我想要这个东西的value作为一个字

c# - 如何调整 "is a type but is used like a variable"?

我正在尝试在网络服务中生成一些代码。但它返回了2个错误:1)List是一种类型,但像变量一样使用2)方法“Customer”没有重载接受“3个参数”[WebService(Namespace="http://tempuri.org/")][WebServiceBinding(ConformsTo=WsiProfiles.BasicProfile1_1)][ToolboxItem(false)]publicclasswstest:System.Web.Services.WebService{[WebMethod]publicListGetList(){Listli=List();li.A

c# - Hook /覆盖 DirectX 游戏?

谁能告诉我如何在C#中挂接/覆盖DirectX游戏?我曾尝试让全屏C#窗口与游戏重叠,但它不会。经过一番研究,我发现我需要Hook游戏,然后显示C#窗口。谁能解释一下我将如何做到这一点?我可以在DirectX游戏上显示C#表单吗? 最佳答案 你可以试试myexampleonhookingtheDirect3D9APIusingC#.这利用了EasyHook一个开源.NET程序集,允许您将Hook从托管代码安装到非托管函数中。还使用了SlimDX-这是一个围绕Direct3D库的开源托管包装器。Hook的棘手部分是确定COM对象的虚函

c# - 编译器错误 : "error CS0307: The variable ' int' cannot be used with type arguments"

如果我有以下代码:privatevoidCheck(boola,boolb){}privatevoidCheck(inta,intb,intc,boolflag){Check(a(flag?c:b-10));}我在调用Check(int,int)时遇到编译时错误:errorCS0307:Thevariable'int'cannotbeusedwithtypearguments我也遇到了这些错误:errorCS0118:'b'isavariablebutisusedlikeatypeerrorCS0118:'a'isavariablebutisusedlikeatype为什么会出现这些错

macOS 更新Xcode,UE4编译C++报错variable “LayerNames” set but not used -Wunused-but-set-variable解决方案

一、背景本人在一次苹果macOS系统更新(手贱点了一下AppStore里的全部更新)后,发现虚幻引擎UE4.27的C++项目无法编译通过,报错信息为:variable“LayerNames”setbutnotused[-Werror,-Wunused-but-set-variable]constTArray*LayerNames=&LayersExpression->GetLayerNames();经过翻查社区资料:LayerNameserrorbrickingmyMacprojects-Platform&Builds-UnrealEngineForums外加本人亲自验证,得出如下两种适用于不