小编Lam*_*lex的帖子

为什么SendKey.Send()只能偶尔使用一次?

我正在制作一个全局捕获键盘输入的Windows应用程序.当用户使用应用程序使用的CTRL + ALT + G快捷键组合时

SendKey.Send(Guid.NewGuid().ToString());
Run Code Online (Sandbox Code Playgroud)

在任何文本字段中键入生成的GUID.无论应用程序采取何种输入,它都应该这样做.

当你第一次键入CTRL + ALT + G时,它的工作方式与我的预期完全相同,但后续尝试不会产生任何结果,或者只是非常罕见的成功.

我的意思是,这一切都应该非常简单和一致.我有一个工作的全局键盘钩子,它一直工作,我已经测试过,但SendKey.Send()方法不是每次都有效.

我看过Google的任何与我的问题相关的内容,但到目前为止还没有任何工作.

有人有任何见解吗?

编辑1:我也尝试过使用SendKey.SendWait(),做同样的事情.我真的想要一种更灵敏的方式来使用这种键盘快捷方式生成新的GUID.

编辑2:

以下是代码的基本部分:

/* Initialization Code Here */
// register the event that is fired after the key press.
hook.KeyPressed += new EventHandler<KeyPressedEventArgs>(hook_KeyPressed);
// register the control + alt + F12 combination as hot key.
hook.RegisterHotKey((uint)(HotkeyModifiers.Control | HotkeyModifiers.Alt), Keys.G);
Run Code Online (Sandbox Code Playgroud)

事件代码非常简单:

void hook_KeyPressed(object sender, KeyPressedEventArgs e)
{
    SendKeys.SendWait(Guid.NewGuid().ToString());
}
Run Code Online (Sandbox Code Playgroud)

我项目中的其他任何事情都只是松懈.

更新1:

关于这个问题,我确实有更多的问题,但是今天我没有时间继续研究这个问题.我已经实现了Jon Raynor建议使用app.config方法取得一定程度的成功.一旦我解决了我的新问题,我将发布一个编辑,如果我的应用程序按预期运行,可能会关闭此问题.

.net c# keyboard-shortcuts keyboard-events

7
推荐指数
1
解决办法
4216
查看次数

仅包含Serializable对象的字典

我正在寻找一种方法来确保只有可序列化的对象存储在C#中的Dictionary中.

更具体地说,我希望做类似的事情:

Dictionary<String, ISerializable> serialDict = new Dictionary<String, ISerializable>();
Run Code Online (Sandbox Code Playgroud)

这个问题是我不能存储整数类型,如整数,布尔值或字符串.

有没有办法确保我的词典只包含可以序列化的对象?

c# generics serialization dictionary

6
推荐指数
1
解决办法
568
查看次数

为什么Dictionary <TKey,TValue>没有一个带有KeyValuePair对象的Add方法?

按照.NET API,类Dictionary<TKey, TValue>是继承自ICollection<T>,这里TKeyValuePair<TKey, TValue>.Dictionary<TKey, TValue>该类如何隐藏它继承的一些方法ICollection<T>

例如:

ICollection<T>有方法ICollection.Add(T item) ,但当你使用一个Dictionary<TKey, TValue>对象时,它没有该方法.你只能使用Dictionary<TKey, TValue>.Add(TKey key, TValue value).没有Dictionary<TKey, TValue>.Add(KeyValuePair<TKey,TValue> kvp)方法.

谁知道为什么?这些方法是如何隐藏的?

.net c# collections inheritance interface

4
推荐指数
1
解决办法
894
查看次数

.NET RSA.Create(String algName):algName是什么?

根据RSA类的MSDN文档,有两种RSA.Create()方法.一个默认实现,一个采用字符串参数"algName".我无法在任何地方找到任何使用RSA.Create(String)版本的示例.

所以我的问题是:参数"algName"通常包含什么?可以使用哪些算法?或者我在哪里可以找到有效算法名称的信息?

.net cryptography rsa

4
推荐指数
2
解决办法
2115
查看次数

.NET Flag Enum从值获取属性

问候StackOverflow,

如果我有一个带有Flag属性的枚举类型以及此枚举类型中具有各自属性的值,我该如何检索所有适当的属性?

例如:

[Flags()]
enum MyEnum
{
    [EnumDisplayName("Enum Value 1")]
    EnumValue1 = 1,
    [EnumDisplayName("Enum Value 2")]
    EnumValue2 = 2,
    [EnumDisplayName("Enum Value 3")]
    EnumValue3 = 4,
}

void Foo()
{
    var enumVar = MyEnum.EnumValue2 | MyEnum.EnumValue3;

    // get a collection of EnumDisplayName attribute objects from enumVar
    ...
}
Run Code Online (Sandbox Code Playgroud)

.net c# enums custom-attributes

3
推荐指数
1
解决办法
890
查看次数

将gsutil输出到文件

问候StackOverflow,

我正在开发一个Windows上的小项目,需要读取GSUTIL复制功能的输出.问题是,复制功能的输出似乎不能通过标准输出工作.此外,GSUTIL的行为不一致:管道输出不能与复制功能一起使用,但使用列表功能确实有效.

当我在命令提示符中使用以下命令时,输出将显示在命令提示符中,但不会重定向到文本文件.此命令无法正常工作:

C:\gsutil> python gsutil cp "file://C:/test_files/*" gs://gs_teststore/ > gsutil_cp.txt
Run Code Online (Sandbox Code Playgroud)

另一方面,当我使用list函数(ls)时,输出通过标准输出工作,并在我希望的工作:

C:\gsutil> python gsutil ls gs://gs_teststore/ > gsutil_ls.txt
Run Code Online (Sandbox Code Playgroud)

有没有办法从GSUTIL的复制功能中捕获输出?

pipe google-cloud-storage gsutil

2
推荐指数
2
解决办法
4516
查看次数