我正在编写一个C#应用程序,需要与用本机C编写的另一个应用程序进行通信.到目前为止,我已经想出如何使用User32.dll SendMessage将消息从我的C#应用程序发送到C应用程序.但是,我无法弄清楚如何让C#应用程序从C应用程序接收消息.
我已经看到了覆盖WndProc方法的WinForms示例,但是在WPF或Console应用程序中没有要覆盖的WndProc方法.当然,至少可以在控制台应用程序中执行此操作.对?
我需要检测新驱动器何时通过USB端口,火线端口等插入Windows系统.我知道WM_DEVICECHANGE消息,但这需要打开一个窗口才能使用它.有没有办法在C#中创建后台进程来检测插入新驱动器的时间?
背景信息:我想编写此应用程序以从公司可移动驱动器中删除蠕虫.常规防病毒软件无法删除它.我们有一个将删除蠕虫的脚本,但它必须手动运行,这不足以控制爆发.
我写了一个与网络通信无关的.Net应用程序.在使用NIC的整个应用程序中没有一行代码,但我的防火墙已经发现它在应用程序启动时因某些原因尝试联系Verisign.这不会经常发生; 事实上,它只发生过两次.
最后一次,我告诉我的防火墙允许访问网络之前,我能够启动Wireshark.我没有真正的数据传输.它只捕获了9个TCP数据包:一些SYN数据包,一些SYN/ACK和一些RST数据包(RST数据包被破坏).我怀疑我的第三方dll之一,但我不明白为什么数学库或图像处理库会尝试与Verisign建立连接,然后对该连接不做任何处理.
我的客户在安全严密的组织中; 我想要的最后一件事是打电话询问为什么我的应用程序连接到Internet.
有谁知道为什么会这样?有没有办法防止它发生?
Wireshark生成的.pcap文件在这里.
我想在我的WP7应用程序中使用WrapPanel,因此我使用了Silverlight for Windows Phone Toolkit中包含的wrappanel .这个包装的问题在于它不支持UI虚拟化.
您能否就如何为WrapPanel实施UI虚拟化提供一些指导?
编辑:我已经将代码更改为一个简单的测试用例,而不是出现此问题的完整实现.
我试图从另一个脚本中调用一个Powershell脚本,但事情并没有像我期待的那样成功.据我所知,"&"运算符应该将数组扩展为不同的参数.那不是我的事.
caller.ps1
$scriptfile = ".\callee.ps1"
$scriptargs = @(
"a",
"b",
"c"
)
& $scriptfile $scriptargs
Run Code Online (Sandbox Code Playgroud)
callee.ps1
Param (
[string]$one,
[string]$two,
[string]$three
)
"Parameter one: $one"
"Parameter two: $two"
"Parameter three: $three"
Run Code Online (Sandbox Code Playgroud)
.\caller.ps1在以下输出中运行结果:
Parameter one: a b c
Parameter two:
Parameter three:
Run Code Online (Sandbox Code Playgroud)
我认为我遇到的问题是 $scriptargs数组没有扩展,而是作为参数传递.我正在使用PowerShell 2.
如何让caller.ps1运行带有参数数组的callee.ps1?
我正在编写一个将进行大量网络通信的Windows服务,我需要一种方法来通知用户(如果已登录)任何异常/错误.我知道允许服务与桌面交互是不好的做法,那么是否有另一种方法来通知用户发生了错误?我知道事件记录,但我也希望能够从系统托盘中显示通知气泡或引起用户注意的事情.
我对Unity和依赖注入有些新意.我正在尝试编写一个类似于下面的单元测试:
[Test]
public void Test()
{
UnityContainer container = new UnityContainer();
DynamicMock myMock = new DynamicMock(typeof(IMyInterface));
container.RegisterInstance(typeof(IMyInterface), myMock.MockInstance); //Error here
// Continue unit test...
}
Run Code Online (Sandbox Code Playgroud)
执行此测试时,容器会在RegisterInstance方法中使用该消息抛出ArgumentNullException Value cannot be null. Parameter name: assignmentValueType.
堆栈跟踪的顶行是at Microsoft.Practices.Unity.Utility.Guard.TypeIsAssignable(Type assignmentTargetType, Type assignmentValueType, String argumentName).
为什么我不能在UnityContainer中注册MockInstance,我该如何解决这个问题呢?
nunit dependency-injection mocking ioc-container unity-container
我有一个命令行可执行文件,可以将彩色文本打印为标准输出。当我做以下...
my_executable.exe | Out-Host
...我发现 Out-Host 删除了所有彩色输出。当我想显示程序的彩色输出而不通过管道发送它时,这是一个问题。
有没有另一种方法可以让我显示控制台程序/批处理文件的彩色输出而不通过管道发送?
编辑:
换句话说,我想要的是:

但是 Out-Host 会导致这个:

编辑2:
这就是为什么我不能只调用 my_executable.exe 的原因:
我在 .ps1 文件中有一个类似于以下内容的脚本
param($someValue)
# do some things
.\my_executable.exe | Out-Host
# do some more things
return 1
Run Code Online (Sandbox Code Playgroud)
现在,当我执行以下操作时:
$result = .\my-script.ps1
Run Code Online (Sandbox Code Playgroud)
$result 为 1。如果我不使用 Out-Host,$result 将是 my_executable.exe 的输出,最后为 1。Out-Host 允许我显示 my_executable.exe 的输出而不将其返回给调用者。我想要的是一种显示 my_executable.exe 的彩色输出而不将其返回给调用者的方法。
我有两台装有 Windows Server 2003 的计算机。一台计算机在网络上有一些共享文件夹,另一台计算机有一个 Windows 服务(用 C# 编写,在网络服务帐户下运行)需要访问这些共享文件夹。
以下代码作为登录用户工作正常,但在网络服务帐户下执行时会引发异常。
File.WriteAllText(@"C:\temp\temp.txt", File.ReadAllLines(@"\\NetworkServer\Test\test.txt")[0]);
Run Code Online (Sandbox Code Playgroud)
异常消息是Logon failure: unknown user name or bad password。如何让此代码在网络服务帐户下工作?它是 Windows Server 2003 中的一个设置,还是我需要为此添加一些代码才能使其工作?
我试图从我公司正在开发的应用程序中获取一些详细的性能信息.我想要获得的信息示例包括网络事务需要多长时间,应用程序使用多少CPU /内存,给定方法完成所需的时间等.
我过去曾尝试过一些失败的尝试(比如尝试使用DateTime.Now来测量小时间段).最重要的是,我对获取CPU和内存统计信息知之甚少.是否有任何好的.Net类,库或框架可以帮助我收集这类信息和/或将其记录到文本文件中?
c# ×5
powershell ×2
.net ×1
antivirus ×1
console ×1
credentials ×1
frameworks ×1
interop ×1
interprocess ×1
logging ×1
mocking ×1
networking ×1
nunit ×1
performance ×1
scripting ×1
startup ×1
unauthorized ×1
usb-drive ×1
verisign ×1
wpf ×1