我在字符串上使用replaceAll()来替换任何带有"[two letters]"的字母.所以xxxaxxx到xxx [ab] xxx.我不希望已经被替换的那些再次完成(转到xxx [a [cb]] xxx)...
一种简单的方法是排除任何由"["或后跟"]"所引用的字母.什么是正确的正则表达式使用?
replaceAll(foofoofoo,"[ab]");
首先,我是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();" 是错的.它在每次运动后"拉出"形状,所以我只能看到它的一瞥.但是,不包括它会导致每个绘制的圆圈保留在屏幕上.
我如何让一个圆圈"优雅地"跟随我的鼠标,而不是太过于跳跃而没有保留所有过去的圆圈?
所以就像一个graphics.FillEllipse,但中间有一个洞.我需要通过在它们周围放一个环来突出显示一些圆形图标,并且由于较大程序的限制,很难/不可能简单地将FillEllipse放在它们下面以使它看起来像是一个洞.
我有一个NSEvent Keyboard钩子回调.我正在查看事件的修饰符标志,以判断该字母是否应该大写.
当大写锁定已开启并转移被按住了,你按一个键......那钥匙出来作为一个大写字母,但都SHIFT和CAPS标志返回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标志)
所以OS X Keychain有三条信息:
我显然总是知道ServiceName.有没有办法找到该ServiceName的任何已保存用户名?(一旦知道用户名,就很容易找到密码.)
我更喜欢使用一个漂亮的Cocoa包装器,如EMKeychain来做到这一点.但EMKeychain要求UserName获取任何钥匙串项目!
+ (EMGenericKeychainItem *)genericKeychainItemForService:(NSString *)serviceNameString withUsername:(NSString *)usernameString;
如果您需要用户名来查找凭据,您希望如何充分利用钥匙串中的保存凭据?将用户名保存在.plist文件中的最佳做法是什么?
从这个问题,我知道你可以使用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) 当以编程方式移动鼠标光标时,您必须设置CGSetLocalEventsSuppressionInterval为0实时事件,而不是延迟 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该功能所需的?
它是用户正常鼠标移动的事件源吗?或者我手动扭曲光标?
我知道,对于大型网站,您需要分隔页脚,菜单等,以便更新该文件会将更新推送到包含该项目的每个页面.
对于纯粹使用HTML/CSS制作的小网站,建议使用相同,还是在每个页面编写菜单并在需要更改时更新每个页面更简单/更容易/标准?
我不一定想在这个网站上引入PHP或者等等,但是更新菜单的便利性会很好.还有其他建议吗?我听说过服务器端包含可能是一个选项...被认为是"纯HTML"还是更需要在服务器上设置?
谢谢!
我正在创建一个仅限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#中对此进行编码,如果这对任务栏行为完全重要的话.
我正在创建自定义键盘布局。作为开始步骤,我想让用户按下一个键,让我的键盘钩子拦截它,并输出我选择的不同键。
我找到了这个键盘钩子代码,为了我的目的,我试图稍微修改它: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出错。
我可以在这里做什么来拦截键盘钩子并用我选择的字符替换它?
谢谢!