小编Jon*_*ury的帖子

如何从C#应用程序中显示Windows资源管理器上下文菜单?

我在我的应用程序中有一个文件列表,我想让人们右键单击一个项目并显示Windows资源管理器上下文菜单.我假设我需要使用IContextMenu接口,但我不确定从哪里开始.

c# explorer contextmenu

14
推荐指数
3
解决办法
8916
查看次数

正则表达式匹配多个字符串

我需要创建一个可以匹配多个字符串的正则表达式.例如,我想找到"好"或"好"的所有实例.我找到了一些例子,但我想出来的似乎并不奏效:

\b(good|great)\w*\b
Run Code Online (Sandbox Code Playgroud)

谁能指出我正确的方向?

编辑:我应该注意,我不想只匹配整个单词.例如,我可能想要匹配"ood"或"reat"(部分单词).

编辑2:这是一些示例文本:"这是一个非常棒的故事." 我可能想要匹配"this"或"really",或者我可能想匹配"eall"或"reat".

c# regex

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

如何获取HttpRuntime.Cache对象的到期日期时间?

是否有可能获得到期DateTime的的HttpRuntime.Cache对象?

如果是这样,最好的方法是什么?

c# asp.net caching

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

选择随机项目,但不知道项目总数

我有一个案例,我需要选择一个随机项目,但我不知道项目的总数,我不想建立一个庞大的数组,然后选择一个项目.例如,这就是我现在所拥有的:

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,我使用新项目作为选定项目,如果不是忽略它.随着项目总数的增加,每个新项目被选中的机会也相应减少.

这种方法"好"吗?它是否像构建数组并随后选择项目一样"随机"?它是否尽可能快?请随机指导我完成无知.:)

random algorithm

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

如何检索监视器信息?

我正在尝试检索监视器ID,如Windows显示属性(#1,2等等)中所示,但我似乎无法找到方法.我尝试过使用EnumDisplayMonitorsEnumDisplayDevices.它们都返回类似"\.\ DISPLAY1"的内容.但是,此数字并不总是与Windows显示的数字相匹配,尤其是当使用2个视频卡驱动3个或更多显示器时.我是否缺少检索此信息的API调用,或者有没有办法从注册表或其他地方获取它?谢谢!

我尝试过这些方法:
Win32: EnumDisplayMonitors,EnumDisplayDevices:这些都没有返回活动的监视器,也没有一个返回正确的ID.
WMI: "select*from Win32_DesktopMonitor"不会返回所有监视器,也没有ID.
注册表:我在不同地点找到了显示器,我找到的地方都没有我想要的信息.

任何帮助深表感谢.:)

更新:这些是我要查找的监视器编号: 替代文字

.net c++ windows winapi monitors

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

仅显示已加入MySQL表的最新日期

我有2个表,一个"文档"表和一个"内容"表.它们看起来像这样(简化):

document table:
docID
docTitle

content table:
contentID
docID
dateAdded
content
Run Code Online (Sandbox Code Playgroud)

对于每个内容更改,都会在"内容"表中插入新记录.这样,所有变化都有完整的历史记录.我希望获得所有文档的列表,并加入最新内容.它应该返回docID,docTitle和相关内容记录以及最新的"dateAdded"值.我的大脑现在正在让我失望,我将如何创建这个联接?

mysql sql join

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

如何拦截发送到窗口的消息?

我想拦截在不同进程中发送到窗口的消息.做这个的最好方式是什么?当我使用WH_GETMESSAGE钩子时,我看不到消息,我不确定我是否可以跨进程子类化?任何帮助将非常感激.

c++ windows subclass

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

我是单元测试还是集成测试?

我开始使用自动化测试,我想测试一种数据访问方法.我试图测试数据库返回没有记录时代码的作用.

这是应该在单元测试还是集成测试中完成的?

谢谢

testing automated-tests

9
推荐指数
5
解决办法
1749
查看次数

简单的C++线程

我试图用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++ winapi multithreading

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

调试清单中"uiAccess = true"的应用程序时出现Visual Studio 2008错误

我有一个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)的其他人是否可以确认他们遇到了同样的问题?有谁见过这个问题,并有任何想法如何解决它?

manifest visual-studio

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