小编cks*_*ubs的帖子

Java正则表达式匹配"t",除非它是"[t"或"t]"

我在字符串上使用replaceAll()来替换任何带有"[two letters]"的字母.所以xxxaxxx到xxx [ab] xxx.我不希望已经被替换的那些再次完成(转到xxx [a [cb]] xxx)...

一种简单的方法是排除任何由"["或后跟"]"所引用的字母.什么是正确的正则表达式使用?

replaceAll(foofoofoo,"[ab]");

java regex

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

想要在C#中使用绘制的圆圈跟随我的鼠标

首先,我是C#真正的初学者,所以请保持温柔.

我正试图跟着我的光标圈.我不希望任何"小道"落在后面.

private void Form1_MouseMove(object sender, MouseEventArgs e)
{

    drawCircle(e.X, e.Y);

}

private void drawCircle(int x, int y)
{
    Pen skyBluePen = new Pen(Brushes.DeepSkyBlue);
    Graphics graphics = CreateGraphics();
    graphics.DrawEllipse(
        skyBluePen, x - 150, y - 150, 300, 300);
    graphics.Dispose();
    this.Invalidate();
}
Run Code Online (Sandbox Code Playgroud)

这可以正常工作,因为它绘制它并以鼠标为中心进行每次鼠标移动.但是,"this.Invalidate();" 是错的.它在每次运动后"拉出"形状,所以我只能看到它的一瞥.但是,不包括它会导致每个绘制的圆圈保留在屏幕上.

我如何让一个圆圈"优雅地"跟随我的鼠标,而不是太过于跳跃而没有保留所有过去的圆圈?

c# winforms

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

用C#轻松画出空心圆环形状的任何方法

所以就像一个graphics.FillEllipse,但中间有一个洞.我需要通过在它们周围放一个环来突出显示一些圆形图标,并且由于较大程序的限制,很难/不可能简单地将FillEllipse放在它们下面以使它看起来像是一个洞.

c#

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

NSEvent修饰符标志 - 按住Shift和Caps-Lock时的错误?

我有一个NSEvent Keyboard钩子回调.我正在查看事件的修饰符标志,以判断该字母是否应该大写.

当大写锁定已开启并转移被按住了,你按一个键......那钥匙出来作为一个大写字母,但都SHIFTCAPS标志返回FALSE.

//For testing which flags are on.
//Holding down Shift and Caps for some reason = FALSE FALSE...
NSUInteger flags = [NSEvent modifierFlags] & NSDeviceIndependentModifierFlagsMask;
if( flags == NSShiftKeyMask ){
    NSLog(@"Shift - TRUE");
} else {
    NSLog(@"Shift - FALSE");
}

if( flags == NSAlphaShiftKeyMask ){
    NSLog(@"CAPS - TRUE");
} else {
    NSLog(@"CAPS - FALSE");
}
return newUserKeypress;
Run Code Online (Sandbox Code Playgroud)

所以,

-Cap-Lock打开(指示灯亮)

-Shift被压制住了

- 点击[e]键

- 输出为"E"

- 上面代码的输出为FALSE FALSE.

使用shift OR caps正确报告值.为什么没有正确报告它们?如果它们都关闭了......为什么这封信仍然被大写?

如果出于某种原因这是正确的......除了按住按键和按下按键之外,我怎么能告诉正常的按键呢?(它们具有相同的FALSE-FALSE标志)

macos cocoa objective-c

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

仅使用ServiceName获取存储在Keychain中的用户名?或者:你应该在哪里存储用户名?

所以OS X Keychain有三条信息:

  • ServiceName(我的应用程序的名称)
  • 用户名
  • 密码

我显然总是知道ServiceName.有没有办法找到该ServiceName的任何已保存用户名?(一旦知道用户名,就很容易找到密码.)

我更喜欢使用一个漂亮的Cocoa包装器,如EMKeychain来做到这一点.但EMKeychain要求UserName获取任何钥匙串项目!

+ (EMGenericKeychainItem *)genericKeychainItemForService:(NSString *)serviceNameString withUsername:(NSString *)usernameString;

如果您需要用户名来查找凭据,您希望如何充分利用钥匙串中的保存凭据?将用户名保存在.plist文件中的最佳做法是什么?

macos cocoa keychain security-framework

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

从`SecKeychainFindGenericPassword`提供的`SecKeychainItemRef`中提取`username`?

从这个问题,我知道你可以使用SecKeychainFindGenericPassword 没有用户名的值.它仍将返回给定服务的钥匙串项.但是,我如何获得用户名? 仅使用ServiceName获取存储在Keychain中的用户名?或者:你应该在哪里存储用户名?

//SecKeychainFindGenericPassword
//Finds the first generic password based on the attributes passed.

OSStatus SecKeychainFindGenericPassword (
   CFTypeRef keychainOrArray,
   UInt32 serviceNameLength,
   const char *serviceName,
   UInt32 accountNameLength,
   const char *accountName,
   UInt32 *passwordLength,
   void **passwordData,
   SecKeychainItemRef *itemRef
);
Run Code Online (Sandbox Code Playgroud)

我的代码看起来像这样:

UInt32 passwordLength = 0;
char *password = nil;

SecKeychainItemRef item = nil;

OSStatus returnStatus = SecKeychainFindGenericPassword(NULL, 9, @"MyAppName", 0, NULL, &passwordLength, (void **)&password, &item);

//Get password
NSString *passwordString = [[[NSString alloc] initWithData:[NSData dataWithBytes:password length:passwordLength] encoding:NSUTF8StringEncoding] autorelease];
SecKeychainItemFreeContent(NULL, password);

//Get username (not …
Run Code Online (Sandbox Code Playgroud)

macos cocoa objective-c

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

使用“CGEventSourceSetLocalEventsSuppressionInterval”代替已弃用的“CGSetLocalEventsSuppressionInterval”

当以编程方式移动鼠标光标时,您必须设置CGSetLocalEventsSuppressionInterval0实时事件,而不是延迟 250 毫秒。

不幸的是,CGSetLocalEventsSuppressionInterval它在 Snow Leopard 中被标记为已弃用。

另一种方法是CGEventSourceSetLocalEventsSuppressionInterval(CGEventSourceRef source, CFTimeInterval seconds); https://developer.apple.com/library/mac/#documentation/Carbon/Reference/QuartzEventServicesRef/Reference/reference.html#//apple_ref/c/func/CGEventSourceSetLocalEventsSuppressionInterval

-(void) mouseMovement:(CGEventRef) newUserMouseMovement
{
    //Move cursor to new position
    CGSetLocalEventsSuppressionInterval(0.0); //Deprecated in OS X 10.6
    CGWarpMouseCursorPosition(NSPointToCGPoint(newMousePosition));
    CGSetLocalEventsSuppressionInterval(0.25); //Deprecated in OS X 10.6

    //--OR--//

    CGEventSourceRef source = ???;
    CGEventSourceSetLocalEventsSuppressionInterval(source, 0.0);
    CGWarpMouseCursorPosition(NSPointToCGPoint(newMousePosition));
    CGEventSourceSetLocalEventsSuppressionInterval(source, 0.25);
}
Run Code Online (Sandbox Code Playgroud)

我无法让后一种方法发挥作用。

所以我想我的问题是如何获得CGEventSourceRef该功能所需的?

它是用户正常鼠标移动的事件源吗?或者我手动扭曲光标?

macos cocoa macos-carbon objective-c

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

在基于html的小型网站上包含/更新常用元素的最佳方式

我知道,对于大型网站,您需要分隔页脚,菜单等,以便更新该文件会将更新推送到包含该项目的每个页面.

对于纯粹使用HTML/CSS制作的小网站,建议使用相同,还是在每个页面编写菜单并在需要更改时更新每个页面更简单/更容易/标准?

我不一定想在这个网站上引入PHP或者等等,但是更新菜单的便利性会很好.还有其他建议吗?我听说过服务器端包含可能是一个选项...被认为是"纯HTML"还是更需要在服务器上设置?

谢谢!

html

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

系统托盘notifyIcon不接受左键单击事件

我正在创建一个仅限System-Tray的应用程序.拥有没有主窗体的图标有点复杂,但是通过StackOverflow上的先前主题我已经解决了.右键单击工作正常,我已在上下文菜单中链接等.

我在左键单击时遇到问题.据我所知,"notifyIcon1_Click"事件根本没有触发.

    private void notifyIcon1_Click(object sender, EventArgs e)
    {
        Debug.WriteLine("Does it work here?");

        if (e.Equals(MouseButtons.Left))
        {
            Debug.WriteLine("It worked!");
        }
    }
Run Code Online (Sandbox Code Playgroud)

这些调试行都没有输出,该事件中的断点不会停止程序等.

我做错了吗?我的下一步应该是什么?我正在使用Windows 7在C#中对此进行编码,如果这对任务栏行为完全重要的话.

c# windows click winforms

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

使用低级键盘钩子更改键盘字符

我正在创建自定义键盘布局。作为开始步骤,我想让用户按下一个键,让我的键盘钩子拦截它,并输出我选择的不同键。

我找到了这个键盘钩子代码,为了我的目的,我试图稍微修改它:http : //blogs.msdn.com/toub/archive/2006/05/03/589423.aspx

我已将相关方法更改为:

private static IntPtr HookCallback(int nCode, IntPtr wParam, IntPtr lParam)
{
    if (nCode >= 0 && wParam == (IntPtr)WM_KEYDOWN)
    {
        KBDLLHOOKSTRUCT replacementKey = new KBDLLHOOKSTRUCT();
        Marshal.PtrToStructure(lParam, replacementKey);
        replacementKey.vkCode = 90; // char 'Z'
        Marshal.StructureToPtr(replacementKey, lParam, true);
    }
    return CallNextHookEx(_hookID, nCode, wParam, lParam);
}
Run Code Online (Sandbox Code Playgroud)

我希望它声明一个新的 KBD 结构对象,将键盘钩子提供的 KBD 结构复制到其中,修改对象的 vkCode 以使用不同的字符,然后用修改后的版本覆盖提供的对象。这应该有希望保持所有内容相同,除了它写入不同的字符这一事实。

不幸的是,它不起作用。键入原始键盘字符。Visual Studio 输出窗格也会A first chance exception of type 'System.ArgumentException' occurred in MirrorBoard.exe出错。

我可以在这里做什么来拦截键盘钩子并用我选择的字符替换它?

谢谢!

c# keyboard keyboard-hook low-level

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