小编Cia*_*tic的帖子

在WPF/C#中使用全局键盘钩子(WH_KEYBOARD_LL)

我从我在互联网上发现的代码中找到了自己的WH_KEYBOARD_LL帮助类:

将以下代码放到一些utils库中,让它成为YourUtils.cs:

using System;
using System.Diagnostics;
using System.Runtime.InteropServices;
using System.Runtime.CompilerServices;
using System.Windows.Input;

namespace MYCOMPANYHERE.WPF.KeyboardHelper
{
    public class KeyboardListener : IDisposable
    {
        private static IntPtr hookId = IntPtr.Zero;

        [MethodImpl(MethodImplOptions.NoInlining)]
        private IntPtr HookCallback(
            int nCode, IntPtr wParam, IntPtr lParam)
        {
            try
            {
                return HookCallbackInner(nCode, wParam, lParam);
            }
            catch
            {
                Console.WriteLine("There was some error somewhere...");
            }
            return InterceptKeys.CallNextHookEx(hookId, nCode, wParam, lParam);
        }

        private IntPtr HookCallbackInner(int nCode, IntPtr wParam, IntPtr lParam)
        {
            if (nCode >= 0)
            {
                if (wParam == …
Run Code Online (Sandbox Code Playgroud)

c# wpf winapi

56
推荐指数
1
解决办法
5万
查看次数

WPF在主窗口之前显示对话框

如何在主窗口之前显示对话窗口(例如登录/选项等)?

这是我尝试过的(它显然曾经有过,但现在不再有了):

XAML:

<Application ...
    Startup="Application_Startup">
Run Code Online (Sandbox Code Playgroud)

申请:

public partial class App : Application
{
    private void Application_Startup(object sender, StartupEventArgs e)
    {
        Window1 myMainWindow = new Window1();
        DialogWindow myDialogWindow = new DialogWindow();
        myDialogWindow.ShowDialog();
    }
}
Run Code Online (Sandbox Code Playgroud)

结果:首先显示myDialogWindow.关闭时,Window1将按预期显示.但是当我关闭Window1时,应用程序根本没有关闭.

wpf dialog

42
推荐指数
3
解决办法
4万
查看次数

pylint被目录忽略

以下是来自pylint的文档:

--ignore=<file>
    Add <file or directory> to the black list. It should be a base name, not a path. You may set this option multiple times. [current: %default]
Run Code Online (Sandbox Code Playgroud)

然而,我没有运气让目录部分工作.

我有一个名为migrations的目录,它有django-south迁移文件.当我输入--ignore = migrations时,它仍然会在迁移目录中的文件中向我提供错误/警告.

难道这--ignore不适用于目录吗?

如果我甚至可以使用regexp来匹配被忽略的文件,那么django-south文件都被命名为0001_something,0002_something ...


由于我无法通过目录来忽略工作,我只是简单地放在# pylint: disable-msg-cat=WCREFI每个迁移文件的顶部,忽略所有的pylint错误,警告和信息.

python pylint

32
推荐指数
5
解决办法
2万
查看次数

如何将boost绑定转换为C函数指针?

假设我有这个:

void func(WCHAR* pythonStatement) {
  // Do something with pythonStatement
}
Run Code Online (Sandbox Code Playgroud)

我需要将它转换为void function(void),如下所示:

bind(func, TEXT("console.write('test')"))
Run Code Online (Sandbox Code Playgroud)

现在我有这样的结构:

typedef void (__cdecl * PFUNCPLUGINCMD)();

struct FuncItem {
PFUNCPLUGINCMD pFunc;
    // ...
};
Run Code Online (Sandbox Code Playgroud)

如何设置我的struct的pFunc bind(func, "something")?绑定返回lambda_functor而不是函数指针,那么如何将此函子转换为函数指针?

谢谢.


结束使用包装"解决方案"(GitHub)

c++ boost

13
推荐指数
1
解决办法
3576
查看次数

System.Uri实现了ISerializable,但是给出了错误?

可能重复:
如何(xml)序列化uri

据我所知,Uri实现了ISerializable,但在使用时抛出错误:

XmlSerializer xs = new XmlSerializer(typeof(Server));
xs.Serialize(Console.Out, new Server { Name = "test", URI = new Uri("http://localhost/") });

public class Server
{
    public string Name { get; set; }
    public Uri URI { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

如果Uri类型更改为,则工作正常string.

谁知道罪魁祸首是什么?


Anton Gogolev提出的解决方案:

public class Server
{
    public string Name { get; set; }

    [XmlIgnore()]
    public Uri Uri; 

    [XmlElement("URI")]
    public string _URI // Unfortunately this has to be public to be xml serialized. …
Run Code Online (Sandbox Code Playgroud)

.net xml-serialization

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

如何从.NET Core csproj中引用的NuGet包中将文件复制到输出目录?

我正在尝试在.NET核心csproj应用程序中使用PhantomJS NuGet包.但我认为使用PackageReferenceNuGet的新语法是不可能的.

当我像这样引用PhantomJS包时:

<PackageReference Include="PhantomJS" Version="2.1.1">
  <IncludeAssets>all</IncludeAssets>
</PackageReference>
Run Code Online (Sandbox Code Playgroud)

我跑的时候什么也没做dotnet build.

我希望它将PhantomJS包中的文件复制到输出目录(或项目中的任何位置),这样我就可以使用PhantomJS包提供的二进制文件.

有没有其他方法将PhantomJS NuGet包的内容复制到MSBuild的输出目录?

msbuild csproj .net-core

9
推荐指数
3
解决办法
3469
查看次数

WPF:TemplateBinding到StrokeThickness的形状不起作用?

看起来ControlTemplate中的以下Ellipse没有获得BorderThickness,但为什么呢?

<Window.Resources>
    <ControlTemplate x:Key="EllipseControlTemplate" TargetType="{x:Type TextBox}">
        <Grid>
            <Ellipse 
                Width="{TemplateBinding ActualWidth}" 
                Height="{TemplateBinding ActualHeight}" 
                Stroke="{TemplateBinding Foreground}" 
                StrokeThickness="{TemplateBinding BorderThickness}" />
                <ScrollViewer Margin="0" x:Name="PART_ContentHost" HorizontalAlignment="Center" VerticalAlignment="Center"/>
        </Grid>
    </ControlTemplate>
</Window.Resources>
<Grid>
    <TextBox
        Template="{DynamicResource EllipseControlTemplate}" 
        Foreground="Green"
        BorderThickness="15" />
</Grid>
Run Code Online (Sandbox Code Playgroud)

TemplateBinding Foreground工作得很好,椭圆是绿色的.但StrokeThickness它似乎不起作用,为什么?

.net wpf xaml templatebinding .net-3.5

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

WPF:如何在Key*事件中检测Key重复?

注意:e.IsRepeat确认可行.存在的问题是因为我使用从Ubuntu到Windows的远程桌面.

我找到了此远程桌面问题的解决方法:

  1. 在Ubuntu中禁用密钥重复.
  2. 在主机Windows中:使用"打开重复键和慢键"启用FilterKeys
  3. 使用regedit转到 HKEY_CURRENT_USER\Control Panel\Accessibility\Keyboard Response
    1. AutoRepeatDelay,AutoRepeatRate, Last Valid Delay,Last Valid Repeat足够小.
    2. 禁用FilterKeys并重新启用以刷新注册表更改.

如何检测KeyUp/ KeyDown(或PreviewKeyDown/ PreviewKeyUp)事件中的密钥重复?

我有以下测试用例:

    public Window1() {
        InitializeComponent();

        this.KeyDown += new KeyEventHandler(Window1_KeyDown);
        this.KeyUp += new KeyEventHandler(Window1_KeyUp);
    }

    void Window1_KeyUp(object sender, KeyEventArgs e) {
        if (e.Key == Key.D) {
            Console.WriteLine("DOWN: key: {0}, rep{1}, togg{2}, dow{3}, up{4}", e.Key, e.IsRepeat, e.IsToggled, e.IsDown, e.IsUp);
        }
    }

    void Window1_KeyDown(object sender, KeyEventArgs e) …
Run Code Online (Sandbox Code Playgroud)

.net c# wpf keyboard-events .net-3.5

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

PHP的cPickle反序列化来自PHP?

我必须在PHP中序列化使用Python中的cPickle序列化的字典.

在这个特定情况下,我可能只是想要获取所需信息,但是有更好的方法吗?PHP的任何扩展都允许我在整个字典中更加原生地反序列化?

显然它在Python中被序列化,如下所示:

import cPickle as pickle

data = { 'user_id' : 5 }
pickled = pickle.dumps(data)
print pickled
Run Code Online (Sandbox Code Playgroud)

这种序列化的内容不能轻易粘贴到此处,因为它包含二进制数据.


由于Python结尾是Django,我最终创建了自己的JSONSessionStore.

php python serialization json pickle

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

ComboBoxItem到ComboBox的全宽,使用SelectedIndex或导航键盘?

在XAML之后导致"我的东西"居中,ComboBox 直到我打开它ComboBox,当它正确伸展自己.

    <ComboBox Height="30" Width="300" HorizontalContentAlignment="Stretch" SelectedIndex="0">
        <ComboBoxItem HorizontalContentAlignment="Stretch">
            <Border Background="Red">
                <TextBlock>My stuff...</TextBlock>
            </Border>
        </ComboBoxItem>
    </ComboBox>
Run Code Online (Sandbox Code Playgroud)

问题是,ComboBoxItem即使选择使用它,是否有可能被拉伸SelectedIndex?如果SelectedIndex未触及(-1)并且使用键盘选择项目,则会发生相同的错误或功能.

解决方法可能是在app的开头以编程方式打开ComboBox,这相当丑陋.

wpf xaml combobox selectedindex

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

使用autohotkey中的键发送现有修饰符?

我正在尝试使用Send命令发送压缩修改器,只有我想出的方法是将它们全部列出:

; (Note: I've remapped using registry the Capslock as F13)
F13 & h::
    if GetKeyState("Control") && GetKeyState("Shift") {
        Send +^{Left}
        return
    }

    if GetKeyState("Control") {
        Send ^{Left}
        return
    }

    if GetKeyState("Shift") {
        Send +{Left}
        return
    }
    Send {Left}
    return
Run Code Online (Sandbox Code Playgroud)

在Windows中如果你按ctrl + left它会向左跳一个单词,如果按ctrl + shift + left它会向左选择一个单词.类似地,我想像上面的例子一样发送现有的修饰符,但是有更简单的方法吗?伪代码:F13 & h::Send {CurrentlyPressedModifiers}{Left}

autohotkey

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

在Play 2.4中使用DI时如何进行数据库初始化?

玩2.4不鼓励使用GlobalSettings.onStart和整个Global对象.

我正在使用Play-slick,它在GitHub中很好的DI示例,但它缺少一个如何进行数据库初始化的示例.

如何在使用DI时以及当GlobalSettings.onStart不可用时实现数据库初始化?

数据库初始化的常见情况是:如果在DEV模式下,请添加这些行,如果PROD执行这些行.想要的例子.

dependency-injection scala playframework playframework-2.4

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