我正在寻找一种通过C#-code弹出USB设备的简短方法,所以我自己编写了一个小类,但它根本不起作用.因为没有弹出窗口说"锁定成功!" 我认为问题依赖于"LockVolume"函数,但我不知道在哪里.
有人看到我犯的错误吗?
class USBEject
{
[DllImport("kernel32.dll", SetLastError = true, CharSet = CharSet.Auto)]
private static extern IntPtr CreateFile(
string lpFileName,
uint dwDesiredAccess,
uint dwShareMode,
IntPtr SecurityAttributes,
uint dwCreationDisposition,
uint dwFlagsAndAttributes,
IntPtr hTemplateFile
);
[DllImport("kernel32.dll", ExactSpelling = true, SetLastError = true, CharSet = CharSet.Auto)]
private static extern bool DeviceIoControl(
IntPtr hDevice,
uint dwIoControlCode,
IntPtr lpInBuffer,
uint nInBufferSize,
IntPtr lpOutBuffer,
uint nOutBufferSize,
out uint lpBytesReturned,
IntPtr lpOverlapped
);
[DllImport("kernel32.dll", ExactSpelling = true, SetLastError = true, CharSet = CharSet.Auto)]
private static extern bool …Run Code Online (Sandbox Code Playgroud) 我有一个表格,要求用户Q按键3次.当他这样做时,表格将消失(这就是为什么我使用无边框形式来防止击中X-Button).表单本身不是模态的.
这是我用来处理KeyDown事件的代码:
private void ConfirmForm_KeyDown_1(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Q)
{
if (++count == 3)
this.Close();
}
}
Run Code Online (Sandbox Code Playgroud)
现在我不想在任务栏中为此表单添加额外的项目,因此我将ShowInTaskbar属性设置为false.问题是,KeyDown当表单没有显示在任务栏中时,事件不再被触发 - 当它完成时,everthing工作得很好.
有谁知道如何修复这个bug?
我目前正在开发一个PHP应用程序,它将使用websockets进行客户端 - 服务器通信.我曾多次听说PHP不应该用于服务器应用程序,因为缺少线程机制,内存管理(循环引用)或unhandy套接字库.
到目前为止,一切都运作良好.我使用phpws作为websocket库和Doctrine DBAL来访问不同的数据库系统; PHP是版本5.3.8.服务器最多应该服务30个客户端.然而,特别是在最后几天,我读过几篇文章,说明PHP对于长期运行的应用程序的无效性.
现在我不知道是否应继续使用带有PHP的websockets或重建整个服务器端应用程序.我用Socket.IO尝试过Python,虽然我没有得到我预期的结果.
我想我有以下选择:
最后一点听起来很有意思,虽然它需要一些工作..服务器一次执行所有客户端请求会有问题吗?
你会推荐什么?PHP的内存管理问题(我每次客户端向服务器发送数据时都使用gc_collect)仍然有效吗?除了使用PHP作为服务器的明显原因(没有线程,......)之外还有其他原因吗?