小编gta*_*rga的帖子

如何在C#中备份和恢复系统剪贴板?

我将尽我所能详细解释我正在努力实现的目标.

我正在使用带有IntPtr窗口句柄的C#来从我自己的C#应用​​程序对外部应用程序执行CTRL-C复制操作.我不得不这样做,因为无法使用GET_TEXT直接访问文本.然后我在我的应用程序中使用该副本的文本内容.这里的问题是我现在已经覆盖了剪贴板.

我希望能做的是:

  1. 备份剪贴板的原始内容,该内容可能由我自己以外的任何应用程序设置.
  2. 然后执行复制并将值存储到我的应用程序中.
  3. 然后恢复剪贴板的原始内容,以便用户仍然可以访问他/她的原始剪贴板数据.

这是我到目前为止尝试的代码:

private void GetClipboardText()
{

    text = "";

    IDataObject backupClipboad = Clipboard.GetDataObject();

    KeyboardInput input = new KeyboardInput(this);
    input.Copy(dialogHandle); // Performs a CTRL-C (copy) operation

    IDataObject clipboard = Clipboard.GetDataObject(); 
    if (clipboard.GetDataPresent(DataFormats.Text))
    {
        // Retrieves the text from the clipboard
        text = clipboard.GetData(DataFormats.Text) as string;
    }

    if (backupClipboad != null) 
    {
        Clipboard.SetDataObject(backupClipboad, true); // throws exception
    }
}
Run Code Online (Sandbox Code Playgroud)

我使用System.Windows.Clipboard而不是System.Windows.Forms.Clipboard.原因是当我执行CTRL-C时,System.Windows.Forms中的Clipboard类没有返回任何数据,但系统剪贴板却没有.

我查看了一些低级user32调用,如OpenClipboard,EmptyClipboard和CloseClipboard,希望它们可以帮助我这样做,但到目前为止,我一直在尝试恢复时遇到COM异常.

我想也许这与OpenClipboard参数有关,该参数期望一个想要控制剪贴板的应用程序的IntPtr窗口句柄.由于我提到我的应用程序没有GUI,这是一个挑战.我不知道该在这里传递什么.也许有人可以对此有所了解?

我是否错误地使用了Clipboard类?有没有明确的方法来获取没有GUI的应用程序的IntPtr窗口句柄?有谁知道备份和恢复系统剪贴板的更好方法?

c# backup clipboard restore

14
推荐指数
2
解决办法
6193
查看次数

自动化Google Chrome扩展程序安装

我正在制作Google Chrome扩展程序.我们将它包含在自动构建系统中,因为它一直在处理,我们需要一个解决方案,能够将扩展名打包为.crx文件,根据http://code.google.com/chrome/extensions/ packaging.html可以轻松编写脚本.

我的问题是,在打包扩展后,是通过命令行还是其他一些程序化的方法,以自动方式安装新打包的扩展?

如果有人知道如何或有任何我可以指向的参考资料,我将非常感谢所提供的任何帮助.谢谢.

install google-chrome

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

有没有一种可靠的方法来使用C#激活/设置焦点到窗口?

我正在尝试使用C#找到一种可靠的方法来激活/设置焦点到外部应用程序的窗口.目前我正在尝试使用以下Windows API调用来实现此目的:

SetActiveWindow(handle);
SwitchToThisWindow(handle, true);
Run Code Online (Sandbox Code Playgroud)

以前我也在ShowWindow(handle, SW_SHOWMAXIMIZED);其他2之前执行过,但是因为它导致了奇怪的行为而删除了它.

我当前实现的问题是偶尔会无法正确设置焦点.窗口将变为可见,但其顶部仍显示为灰色,就好像它没有聚焦一样.

有没有办法可靠地做到这一点,100%的时间工作,或不一致的行为是我无法逃避的副作用?如果您有任何建议或实施始终有效,请告诉我.

c# windows focus

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

Objective-C中的class_addMethod只能在特定实例上工作吗?

我正在尝试编写一些动态代码,用户可以尝试从类的特定实例调用方法,并在运行时解析它.检索信息的实现存在,但访问它的方法不存在,因为它基于每个实例.

例如,用户可能想要调用类中不存在的名为"getSomething"的方法:

[someInstance getSomething]
Run Code Online (Sandbox Code Playgroud)

在这种情况下,我希望有一个实现已解析,它具有一个仅适用于正在处理的实例的变量返回类型.我正在考虑使用Objective-C中的class_addMethod,但我并不是100%肯定它的行为.在文档中,它声称这可以用于添加类或实例方法.调用此类是否仅将方法添加到特定实例或类中,以便之后创建的每个实例都将具有该方法?我还读到,一旦添加了一个方法,你就无法删除它.

也许我的方法不正确,所以如果知道任何替代方案我会很感激.我不能使用消息转发,因为没有类可以理解已经实现的选择器.

dynamic objective-c objective-c-runtime resolve

8
推荐指数
2
解决办法
5532
查看次数

包含属性且其父级父级包含另一个属性的XPath元素

这是我在这里的第一篇文章,因为我看到很多很棒的答案,我想我会试一试.

我正在尝试使用XPath来获取HTML文档中的特定元素.以下是基于Google网页的示例:

<html>
  <head>
    <title>XPath Test</title>
  </head>
  <body>
    <form name='f'>
      <table>
        <tbody>
          <tr>
            <td>
              <input name='q' type="text" />
            </td>
          </tr>
        </tbody>
      </table>
    </form>
  </body>
</html>
Run Code Online (Sandbox Code Playgroud)

使用上面的示例(为了寻求帮助而简化),我希望能够找到名称为'q'的输入元素,以及谁是具有名称='f的5个父母的祖先".

例如,如果我在SWAT的语法中执行此操作,SWAT是位于http://ulti-swat.wikispaces.com的开源Web自动化测试库,则语法如下:

| AssertElementExists |表达式|名= Q; parentElement.parentElement.parentElement.parentElement.parentElement.name = F |输入|

我刚开始学习XPath,并试图了解如何将谓词与轴结合起来.是否可以使用XPath执行此类表达式?如果有的话,知识渊博的人请帮忙吗?

xpath element predicate axes parent

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

在C#中调用其他方法时,如何自动重置布尔值?

使用C#,如果A()在函数之前调用函数,我需要做一些额外的工作C().如果在其间调用任何其他函数A(),C()那么我不想做那些额外的工作.任何需要最少量代码重复的想法?

我试图避免增加般的线条flag = false;到每一个功能B1.. BN.

这是一个非常基本的例子:

bool flag = false;

void A()
{
    flag = true;
}

void B1()
{
    ...
}

void B2()
{
    ...
}

void C()
{
    if (flag) 
    {
        //do something
    }
}
Run Code Online (Sandbox Code Playgroud)

上面的例子只是使用了一个简单的例子,但我愿意使用除了布尔值之外的东西.重要的是我希望能够设置和重置各种标志,以便C()知道如何相应地表现.

谢谢您的帮助.如果您需要澄清,我将编辑我的帖子.

c# flags set call

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

为什么我不能在ASP.NET MVC 2中使用强类型视图的Html辅助方法?

我用模型创建了一个ASP.NET MVC 2项目.然后我创建了一个视图,并选择它作为创建的模型的强类型.部分视图我也做了同样的事情.在任何一种情况下,由于某种原因,我得到错误:"每当我尝试使用ASP.NET MVC 2为模型创建表单元素时提供的Html帮助方法时,无法解析符号'Html'.我有Visual Studio 2010和ASP安装了.NET MVC 2.这是以前见过的东西吗?如果是这样,有没有解决方案可以解决这个问题?

我的模型看起来像:

public namespace MyNamespace { public class MyModel { public string MyProperty { get; set; } } }
Run Code Online (Sandbox Code Playgroud)

常规视图的第一行是:

<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<MyNamespace.MyModel>" %>
Run Code Online (Sandbox Code Playgroud)

我的部分观点的第一行是:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<MyNamespace.MyModel>" %>
Run Code Online (Sandbox Code Playgroud)

html views helper asp.net-mvc-2

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

如何为单个资源建模RESTful API?

我希望在现有项目之上公开一些域RESTful API.我需要建模的实体之一有一个文档:设置.设置是使用应用程序创建的,是一个单例文档.我想通过精心设计的基于资源的RESTful API来公开它.

通常,在为具有许多项的资源建模API时,其类似于:

GET /employees/ <-- returns [] of 1-* items
GET /employees/{id}/ <-- returns 1 item
POST /employees/ <-- creates an item
PUT /employees/{id}/ <-- updates all fields on specific item
PATCH /employees/{id}/ <-- updates a subset of fields specified on an item
DELETE /employees/{id}/ <-- deletes a specific item
Run Code Online (Sandbox Code Playgroud)

选项1:如果我以相同的方式建模设置,则构建以下API:

GET /settings/ <-- returns [] of 1-* items
[{ "id": "06e24c15-f7e6-418e-9077-7e86d14981e3", "property": "value" }]

GET /settings/{id}/ <-- returns 1 item
{ "id": "06e24c15-f7e6-418e-9077-7e86d14981e3", "property": "value" }

PUT …
Run Code Online (Sandbox Code Playgroud)

api rest domain-driven-design

3
推荐指数
2
解决办法
2180
查看次数