我在我的应用程序中有一个文件列表,我想让人们右键单击一个项目并显示Windows资源管理器上下文菜单.我假设我需要使用IContextMenu接口,但我不确定从哪里开始.
我需要创建一个可以匹配多个字符串的正则表达式.例如,我想找到"好"或"好"的所有实例.我找到了一些例子,但我想出来的似乎并不奏效:
\b(good|great)\w*\b
Run Code Online (Sandbox Code Playgroud)
谁能指出我正确的方向?
编辑:我应该注意,我不想只匹配整个单词.例如,我可能想要匹配"ood"或"reat"(部分单词).
编辑2:这是一些示例文本:"这是一个非常棒的故事." 我可能想要匹配"this"或"really",或者我可能想匹配"eall"或"reat".
是否有可能获得到期DateTime的的HttpRuntime.Cache对象?
如果是这样,最好的方法是什么?
我有一个案例,我需要选择一个随机项目,但我不知道项目的总数,我不想建立一个庞大的数组,然后选择一个项目.例如,这就是我现在所拥有的:
List<string> items;
while (true)
{
string item = GetNextItem();
if (item == null)
break;
}
int index = random.GetNext(0, items.count);
Run Code Online (Sandbox Code Playgroud)
正如你所看到的,我正在构建一个我真的不需要的巨大集合,我只需要一个介于0和项目数之间的随机数.这是我正在考虑做的事情,它有效,但我想知道是否有任何专家可以找到它的错误:
int index = -1;
int total;
string selectedItem;
while (true)
{
string item = GetNextItem();
if (item == null)
break;
++total;
int rnd = random.Next(0, total);
if (rnd == total- 1)
{
index = total- 1;
selectedItem = item;
}
}
Run Code Online (Sandbox Code Playgroud)
这给了我索引号和随机选择的项目.我在这背后的想法是,当有3个项目时,例如,我选择0到2之间的随机数(包括),如果它等于2,我使用新项目作为选定项目,如果不是忽略它.随着项目总数的增加,每个新项目被选中的机会也相应减少.
这种方法"好"吗?它是否像构建数组并随后选择项目一样"随机"?它是否尽可能快?请随机指导我完成无知.:)
我正在尝试检索监视器ID,如Windows显示属性(#1,2等等)中所示,但我似乎无法找到方法.我尝试过使用EnumDisplayMonitors和EnumDisplayDevices.它们都返回类似"\.\ DISPLAY1"的内容.但是,此数字并不总是与Windows显示的数字相匹配,尤其是当使用2个视频卡驱动3个或更多显示器时.我是否缺少检索此信息的API调用,或者有没有办法从注册表或其他地方获取它?谢谢!
我尝试过这些方法:
Win32: EnumDisplayMonitors,EnumDisplayDevices:这些都没有返回活动的监视器,也没有一个返回正确的ID.
WMI: "select*from Win32_DesktopMonitor"不会返回所有监视器,也没有ID.
注册表:我在不同地点找到了显示器,我找到的地方都没有我想要的信息.
任何帮助深表感谢.:)
更新:这些是我要查找的监视器编号:

我有2个表,一个"文档"表和一个"内容"表.它们看起来像这样(简化):
document table:
docID
docTitle
content table:
contentID
docID
dateAdded
content
Run Code Online (Sandbox Code Playgroud)
对于每个内容更改,都会在"内容"表中插入新记录.这样,所有变化都有完整的历史记录.我希望获得所有文档的列表,并加入最新内容.它应该返回docID,docTitle和相关内容记录以及最新的"dateAdded"值.我的大脑现在正在让我失望,我将如何创建这个联接?
我想拦截在不同进程中发送到窗口的消息.做这个的最好方式是什么?当我使用WH_GETMESSAGE钩子时,我看不到消息,我不确定我是否可以跨进程子类化?任何帮助将非常感激.
我开始使用自动化测试,我想测试一种数据访问方法.我试图测试数据库返回没有记录时代码的作用.
这是应该在单元测试还是集成测试中完成的?
谢谢
我试图用C++(Win32)创建一个线程来运行一个简单的方法.我是C++线程的新手,但对C#中的线程非常熟悉.这是我正在尝试做的一些伪代码:
static void MyMethod(int data)
{
RunStuff(data);
}
void RunStuff(int data)
{
//long running operation here
}
Run Code Online (Sandbox Code Playgroud)
我想从MyMethod调用RunStuff而不阻塞它.在单独的线程上运行RunStuff最简单的方法是什么?
编辑:我还应该提一下,我希望将依赖关系保持在最低限度.(没有MFC ......等)
我有一个C#WinForms应用程序,在其清单文件中将"uiAccess"设置为"True".当我尝试在Windows 7 x64(RTM)下的Visual Studio 2008 SP1中启动/调试它时,出现此错误:
运行辅助功能应用程序需要执行帮助中描述的步骤.
帮助按钮是一个断开的链接,单击确定只关闭应用程序.它是经过数字签名的,我可以在Windows资源管理器中启动它.这是MS Connect中的相同错误,但遗憾的是它已关闭:
https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=384183
问题:使用Vista/Win7 x64(启用了UAC)的其他人是否可以确认他们遇到了同样的问题?有谁见过这个问题,并有任何想法如何解决它?