我将尽我所能详细解释我正在努力实现的目标.
我正在使用带有IntPtr窗口句柄的C#来从我自己的C#应用程序对外部应用程序执行CTRL-C复制操作.我不得不这样做,因为无法使用GET_TEXT直接访问文本.然后我在我的应用程序中使用该副本的文本内容.这里的问题是我现在已经覆盖了剪贴板.
我希望能做的是:
这是我到目前为止尝试的代码:
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窗口句柄?有谁知道备份和恢复系统剪贴板的更好方法?
我正在制作Google Chrome扩展程序.我们将它包含在自动构建系统中,因为它一直在处理,我们需要一个解决方案,能够将扩展名打包为.crx文件,根据http://code.google.com/chrome/extensions/ packaging.html可以轻松编写脚本.
我的问题是,在打包扩展后,是通过命令行还是其他一些程序化的方法,以自动方式安装新打包的扩展?
如果有人知道如何或有任何我可以指向的参考资料,我将非常感谢所提供的任何帮助.谢谢.
我正在尝试使用C#找到一种可靠的方法来激活/设置焦点到外部应用程序的窗口.目前我正在尝试使用以下Windows API调用来实现此目的:
SetActiveWindow(handle);
SwitchToThisWindow(handle, true);
Run Code Online (Sandbox Code Playgroud)
以前我也在ShowWindow(handle, SW_SHOWMAXIMIZED);其他2之前执行过,但是因为它导致了奇怪的行为而删除了它.
我当前实现的问题是偶尔会无法正确设置焦点.窗口将变为可见,但其顶部仍显示为灰色,就好像它没有聚焦一样.
有没有办法可靠地做到这一点,100%的时间工作,或不一致的行为是我无法逃避的副作用?如果您有任何建议或实施始终有效,请告诉我.
我正在尝试编写一些动态代码,用户可以尝试从类的特定实例调用方法,并在运行时解析它.检索信息的实现存在,但访问它的方法不存在,因为它基于每个实例.
例如,用户可能想要调用类中不存在的名为"getSomething"的方法:
[someInstance getSomething]
Run Code Online (Sandbox Code Playgroud)
在这种情况下,我希望有一个实现已解析,它具有一个仅适用于正在处理的实例的变量返回类型.我正在考虑使用Objective-C中的class_addMethod,但我并不是100%肯定它的行为.在文档中,它声称这可以用于添加类或实例方法.调用此类是否仅将方法添加到特定实例或类中,以便之后创建的每个实例都将具有该方法?我还读到,一旦添加了一个方法,你就无法删除它.
也许我的方法不正确,所以如果知道任何替代方案我会很感激.我不能使用消息转发,因为没有类可以理解已经实现的选择器.
这是我在这里的第一篇文章,因为我看到很多很棒的答案,我想我会试一试.
我正在尝试使用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执行此类表达式?如果有的话,知识渊博的人请帮忙吗?
使用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()知道如何相应地表现.
谢谢您的帮助.如果您需要澄清,我将编辑我的帖子.
我用模型创建了一个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) 我希望在现有项目之上公开一些域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)