小编And*_*rew的帖子

39
推荐指数
5
解决办法
3万
查看次数

从Word OLE应用程序对象获取应用程序标题

有没有办法从Word.Application OLE对象获取窗口标题?我想用它来尝试使用窗口FindWindow.

我正在创建一个OLE对象并添加一个现有文档,如下所示:

App := CreateOLEObject('Word.Application');
App.Visible := True;
App.Activate;
Doc := App.Documents.Open('File.doc');
Run Code Online (Sandbox Code Playgroud)

此时,标题值如下:

App.Caption => 'Microsoft Word'
Doc.ActiveWindow.Caption => 'File.doc [Compatibility Mode]'
Run Code Online (Sandbox Code Playgroud)

但是,窗口标题实际上是File.doc [Compatibility Mode] - Microsoft Word.

有没有办法从OLE对象获取此窗口标题(似乎没有更好的方法来获取HWND本身而不使用FindWindow)?我怀疑假设窗口标题永远是安全的<doc caption> - <app caption>.

我想通过传递正确的标题,使用该FindWindow函数来获取窗口的句柄,以便能够以更安全的方式将其带到前台(请参阅OLE自动化以启动MS Word并将其带到前面).

编辑

以下是使用http://support.microsoft.com/kb/258511中描述的解决方法的修复程序

App := CreateOLEObject('Word.Application');

// get the handle
TempTitle := 'Temp - ' + IntToStr(Random(1000000));
App.Caption := TempTitle;
Handle := FindWindow('OpusApp', PWideChar(TempTitle));
App.Caption := EmptyStr;

App.Visible := True;
App.Activate; …
Run Code Online (Sandbox Code Playgroud)

delphi winapi ole ms-word

7
推荐指数
1
解决办法
4446
查看次数

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

git-tfs:需要对文件进行搁置的挂起更改

我正在尝试git-tfs,我正试图通过运行以下来取消搁置搁置:

git tfs unshelve "Shelveset Name" shelf
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

A shelved pending change on a file is required: $/path/to/dir/deleted
Run Code Online (Sandbox Code Playgroud)

"deleted"是在shelveset中删除的目录.

我只是从git-tfs开始.我需要检查那个搁架,所以暂时我可以单独使用TFS,但如果可能的话,我想知道可能发生的事情并尽可能避免它.

谢谢你的帮助.

git tfs git-tfs

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

如何链接到将数组作为参数的操作(RedirectToAction 和/或 ActionLink)?

我有一个这样定义的动作:

public ActionResult Foo(int[] bar) { ... }
Run Code Online (Sandbox Code Playgroud)

像这样的网址将按预期工作:

.../Controller/Foo?bar=1&bar=3&bar=5
Run Code Online (Sandbox Code Playgroud)

我有另一个动作可以做一些工作,然后重定向到Foo上面的动作以获得bar.

是否有一种使用 RedirectToAction 或 ActionLink 指定路由值的简单方法,以便像上面的示例一样生成 url?

这些似乎不起作用:

return RedirectToAction("Foo", new { bar = new[] { 1, 3, 5 } });
return RedirectToAction("Foo", new[] { 1, 3, 5 });

<%= Html.ActionLink("Foo", "Foo", new { bar = new[] { 1, 3, 5 } }) %>
<%= Html.ActionLink("Foo", "Foo", new[] { 1, 3, 5 }) %>
Run Code Online (Sandbox Code Playgroud)

但是,对于数组中的单个项目,这些确实有效:

return RedirectToAction("Foo", new { bar = 1 });
<%= Html.ActionLink("Foo", "Foo", …
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc url-routing redirecttoaction actionlink asp.net-mvc-routing

5
推荐指数
1
解决办法
2528
查看次数

选择更改时,如何为下拉列表显示不显眼的 jQuery 验证消息?

设置:

  • 启用了客户端验证(+ 不显眼的 javascript)的 ASP.NET MVC 4。
  • jQuery 1.8.2
  • jquery.validate 1.10.0
  • jquery.validate.unobtrusive

html:

<form action="/" method="post">
    <select data-val="true" data-val-required="DropDown is required." id="DropDown" name="DropDown">
        <option value="">Select a letter</option>
        <option>A</option>
        <option>B</option>
        <option>C</option>
    </select>
    <span data-valmsg-for="DropDown" data-valmsg-replace="true"></span>
    <br/>
    <button type="submit">Submit</button>
</form>?
Run Code Online (Sandbox Code Playgroud)

你可以在这里看到它的实际效果。

下拉菜单的服务器端代码非常无趣:

// View Model
public class ViewModel
{
    [Required]
    public string DropDown { get; set; }
}

// View
@Html.DropDownListFor(m => m.DropDown,
                      new SelectList(new[] { "A", "B", "C" }),
                      "Select a letter")
Run Code Online (Sandbox Code Playgroud)

以下是查看问题的步骤:

  1. 用鼠标选择其中一个值(A、B、C)。
  2. 用鼠标选择默认的空值(选择一个字母)。不显示任何必需的消息。
  3. 使用箭头键,选择其中一个值(A、B、C)。
  4. 使用箭头键,选择默认的空值(选择一个字母)。这一次,将显示所需的消息。 …

asp.net-mvc jquery html-select jquery-validate unobtrusive-validation

5
推荐指数
1
解决办法
5095
查看次数