草庐IT

c# - 使用 C# 使 Windows 音量静音

有人知道如何使用C#以编程方式使WindowsXP音量静音吗? 最佳答案 为P/Invoke声明:privateconstintAPPCOMMAND_VOLUME_MUTE=0x80000;privateconstintWM_APPCOMMAND=0x319;[DllImport("user32.dll")]publicstaticexternIntPtrSendMessageW(IntPtrhWnd,intMsg,IntPtrwParam,IntPtrlParam);然后使用这一行来静音/取消静音。SendMessageW(thi

c# - 在 c# 中将网页捕获为图像,确保 javascript 呈现的元素可见

我正在尝试使用标准c#.net代码捕获以下页面。我到处搜索人们的各种方法,其中大部分涉及实例化浏览器对象和使用绘制位图方法。但是,这些都没有提取此页面上图表的内容:http://www.highcharts.com/demo/combo-dual-axes也许javascript没有时间运行,但添加Thread.Sleep(x)并没有帮助。这commercialcomponent正确捕获它,但我宁愿避免在我的项目中需要额外的依赖项,并在其他解决方案非常接近时支付150美元!有人发现他们的解决方案可以正确呈现吗? 最佳答案 您可能尝试

c# - 从 C# 调用带有 C++ header 的 dll

我正在尝试在我有C++header的dll中调用一个方法。我正在从C#调用dll。输入是字符串,输出是二进制数据。以下3种方法中的任何一种都可能起作用,我只是不知道如何让它们中的任何一种一直起作用。C#声明是我做的,所以它们可能不正确1:我可以获取到hGlobal,但是我不知道如何从句柄中获取数据。//CMBT_LL_WINAPIINTDLLPROCLlConvertStringToHGLOBALW(LPCWSTRpszText,_PHGLOBALphMemory);[DllImport("cmll15.dll",EntryPoint="LlConvertStringToHGLOBAL

c++ - atoi() 相当于 intptr_t/uintptr_t

C++(C++11,如果它有所不同)中是否有一个函数可以将字符串转换为uintptr_t或intptr_t?我总是可以使用atoll()并在之后转换它,但最好是获得一个函数,该函数对32位机器执行32位操作,对64位机器执行64位操作。char*c="1234567";uintptr_tptr=atoptr(c);//afunctionthatdoesthis; 最佳答案 这是C++中IMO令人惊讶的差距。虽然stringstream完成了这项工作,但对于这样一个简单的任务来说,它是一个相当繁重的工具。相反,您可以编写一个内联函数,

c# - 如何获取具有系统托盘图标的进程

我正在尝试创建应用程序来获取具有系统托盘图标的进程列表。我搜索了很多,发现了很多引用文献:http://www.raymond.cc/blog/find-out-what-program-are-running-at-windows-system-tray/https://superuser.com/questions/708674/how-to-find-out-what-process-a-system-tray-icon-corresponds-toWhichWindowsprocessisdisplayingagiventaskbarsystemtrayicon?https:/

c# - 调用从 c# 返回 char* 的 c++ dll 函数。不能使用 DllImport()

我有一个带有2个函数的c++dllconstchar*getVersionText1(void);voidgetVersionText2(constchar**res);这两个函数都返回一个描述产品版本的字符串。第一个函数将其作为constchar*返回(这意味着它在内部分配和处理定位它),第二个函数获取指向char*的指针并将其设置为指向描述版本的char*。我想从C#调用这些函数并显示文本。我不能使用[dllimport...]风格,因为函数调用的顺序很重要。我首先调用构造函数而不是getVersion,最后调用析构函数。所以dll必须先加载到内存中。您能否发布打印这两个函数文本的

c# - 将字符串数组从 C++ 传递到 C#

我已经编写了这段运行良好的代码:C++代码extern"C"{constMYLIBRARY_EXPORTchar*giefStrPlx(char*addon){returnaddon;}}C#代码[DllImport("ClassLibrary1")]privatestaticexternIntPtrgiefStrPlx(stringx);voidStart(){IntPtrstringPtr=giefStrPlx("Huntsman");stringhuntsman=Marshal.PtrToStringAnsi(echoedStringPtr);}在此huntsman之后包含“Hu

c++ - 理解 void* 对 intptr_t 和 uintptr_t

这是我正在测试的代码:intvalue=0;void*addyvoid=static_cast(&value);//C++-stylecast.它工作得很好,但我可以使用uintptr_t/intptr_t。但是正如人们所说的那样,它们并不适合用来指点here因为它们太大了。那么,这是真的吗?但是,如果是,使用void*保存指针会更好,但是会不会丢失数据? 最佳答案 intptr_t和uintptr_t的目的是,在某些应用程序中,您实际上确实需要对指针值进行某种数值计算,可能是通过翻转各个位,也许是XORing它们等。在这些情况下,

c# - 如何将 IntPtr 传递给非托管 C++ CLR 托管代码的方法?

我正在使用本教程作为我在32位非托管DLL中的代码的基础https://code.msdn.microsoft.com/CppHostCLR-e6581ee0假设我想调用TestIntPtrpublicclassIntPtrTester{publicstaticvoidTestIntPtr(IntPtrp){MessageBox.Show("TestIntPtrMethodwasCalled");}publicstaticvoidTestInt(intp){MessageBox.Show("TestIntMethodwasCalled");}}如果在C++端它代表句柄,我如何传递Int

c# - 如何从 C# 调用具有 void* 回调和对象参数的 C++ Dll 中的函数

我正在尝试创建一个Cdll的包装器,我正在尝试调用一个函数,该函数采用回调函数,接收一个对象作为传回的指针。.h文件删除externintSetErrorHandler(void(*handler)(int,constchar*,void*),void*data_ptr);处理程序是一个回调函数,在发生错误时调用,data_ptr是传回给您的任何对象(状态),在我的应用程序中就是这个(当前对象)。我能够在使用编码常量类型(如简单类型字符串、整数等)的dll中调用函数。但我不知道如何编码指向作为状态的C#对象的指针。为了将我通过在此处搜索找到的对象引用传递给C函数,否则我似乎需要一个结构