小编Ele*_*ios的帖子

将For/F与WMIC + WHERE子句+ AND子句组合使用

当包含在FOR脚本中的命令中时,如何编写WMIC命令?

wmic service where (name="themes" and state="running") get
Run Code Online (Sandbox Code Playgroud)

以下代码不起作用:

For /F %%a in (
    'wmic service where ^("name='themes'" and "state='running'"^) get'
) do (
    echo %%a
)
Run Code Online (Sandbox Code Playgroud)

syntax for-loop batch-file wmic

10
推荐指数
3
解决办法
7264
查看次数

拦截MS Windows的"SendTo"菜单调用?

情景

我在白天管理和组织了许多文件,SendTo是我在Windows上使用最常用的功能.

问题

默认情况下,当用户单击上下文菜单的项目/链接以发送文件时,操作系统不会显示任何类型的通知/通知程序,指示文件正在复制到所选目标.

我认为这是一个非常错误的设计问题,因为对于大文件,它可以......显示进度条,但如果文件很小,它将不会显示任何进度条/可视指示器,因此无法确保文件被复制(没有手动操作)因为我是人类,我可以通过错误点击SendTo上下文菜单外部.

因此,我想开发一个个人迷你工具,当我使用上下文菜单中的SendTo功能发送/复制文件时,只有SendTo功能,这将帮助我优化我的时间向我显示通知窗口.

简单来说,我想从SendTo菜单中检测复制/发送操作,以确保点击在菜单项上正确完成(而不是在菜单外),同时提供其他基本信息,如源文件夹,目标文件夹,以及文件或文件路径的数量.

是否有任何想法开始朝着正确的方向开发这个工具?

我将非常感谢C#VB.Net中的代码示例,最好是最后一个.

APPROACH

由于我不知道如何开始这样做,我的意思是哪种拦截SendTo调用是最容易或最有效的方式,首先我想挂钩CopyFileCopyFileEx API函数,但它们不提供我需要的信息因为该函数将在任何类型的复制操作中调用,而不仅仅是在我使用SendTo功能时,所以我迷路了.

我不确定我是否应该调查更多有关内部调用的内容,或者可能会更多地调查windows contextmenu本身,而不是弄乱我可以避免的函数钩子和丑陋的东西.

我的主要想法是开发一个隐藏的WinForms(或者是一个Windows服务),当我使用SendTo功能时(当我点击SendTo菜单的一个项目时)在后台等待,然后显示任何类型的可视指示器.屏幕,以确保我正确地点击该菜单项,并可能告知我正在移动的文件数量以及我正在移动它们的位置.

研究

这是一个代码示例,我认为它演示了如何实例化SendTo com对象来创建自己的?,但是它是用c ++编写的,我不确定该示例是否有用,因为我的目的不是替换SendTo菜单而是我会在这里保留这个有用的信息它为其他东西提供服务:

如何在命名空间扩展中添加(启用)标准"发送到"上下文菜单选项

KNOWNFOLDERID常数文档提供了有关一些有用的信息的SendTo文件夹中,我再次不知道这也许可以帮助读/访问监测方法?我只是不停的信息在这里:

GUID:{8983036C-27C0-404B-8F08-102D10DCFD74}

默认路径:%APPDATA%\ Microsoft\Windows\SendTo

旧版默认路径:%USERPROFILE%\ SendTo

Shell扩展处理程序文档中有一个Copy钩子处理程序,我不知道它是否与SendToCOM组件有关系,如果这可以在某种程度上帮助我,对IContextMenu :: InvokeCommand方法引用同样无知也许我可以拦截它来识别SendTo调用?

到目前为止我觉得自己是盲目的.

我最近发现这是一个托管的"发送到"菜单类,但它又是一个用C/C++编写的例子(我认为之前是相同的源代码),我完全不理解,我不确定这是否有帮助我,因为我重申,取代 …

.net c# vb.net windows com

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

如何使用SharpDX绘制透明表面?

(这个问题是基于进一步调查这个其他的问题,但不相同的问题,这是关于绘画的问题非常具体的问题.)

我正在尝试在目标窗口上绘制一个重叠的透明表面,问题是我不知道如何将其涂成透明的,所以到目前为止我的表面是黑色的,我看不清楚正确的方法来清除黑色下面代码中该表面的颜色.

我读过有关pixelformats和alphamodes的内容,但是,似乎我不能使用AlphaMode.Straight所谓的允许透明度.

我知道一个可以做到这一点的免费软件应用程序,它的名字是TurboHUD(一个在游戏客户端的窗口上绘制透明表面以绘制对象的应用程序,即HUD).说实话,也许是荒谬的:我试图从两年多前开始做到这一点,我仍然不知道如何通过做透明度来开始这样做,我需要开始在透明表面上绘制物体.

我做错了什么?这个示例代码是用VB.NET编写的,但我在C#中也接受了一个解决方案.

Imports SharpDX
Imports SharpDX.Direct2D1
Imports SharpDX.Direct3D
Imports SharpDX.DXGI
Imports SharpDX.Mathematics.Interop
Imports SharpDX.Windows

Public NotInheritable Class Form1 : Inherits Form

    Private factory As New Direct2D1.Factory(Direct2D1.FactoryType.SingleThreaded)
    Private render As WindowRenderTarget
    Private renderProps As HwndRenderTargetProperties
    Private renderThread As Thread = Nothing

    Private Sub Form1_Load() Handles MyBase.Shown

        Dim hwnd As IntPtr = Process.GetProcessesByName("notepad").Single().MainWindowHandle

        Me.renderProps = New HwndRenderTargetProperties()
        Me.renderProps.Hwnd = hwnd
        Me.renderProps.PixelSize = New Size2(1920, 1080)
        Me.renderProps.PresentOptions = PresentOptions.None

        Me.render = New WindowRenderTarget(Me.factory, New …
Run Code Online (Sandbox Code Playgroud)

.net c# vb.net directx sharpdx

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

TBBUTTON结构不能与SendMessage一起使用

我正在尝试发送TB_GETBUTTON消息以获取有关此工具栏控件中用红色标记的按钮的信息:

在此处输入图片说明

(系统托盘通知区域)

问题是,当我发送消息时,资源管理器会自我刷新,这非常烦人,因为所有桌面均会刷新,而且我使用的TBBUTTON结构定义没有得到正确的值,因此我测试了三种不同的定义,那些来自pinvoke.net的工会,以及@ David Heffernan 在这里发布的工会。

我正在64位Windows 10中运行以下代码,并在项目属性中设置了x64配置。

我该如何修复结构和更新系统的刷新?

这些是我正在使用的相关定义:

Const WM_USER As Integer = &H400
Const TB_BUTTONCOUNT As Integer = (WM_USER + 24)
Const TB_GETBUTTON As Integer = (WM_USER + 23)
' Toolbar values are defined in "CommCtrl.h" Windows SDK header files.

<StructLayout(LayoutKind.Sequential)>
Public Structure TBBUTTON64
    Public iBitmap As Integer
    Public idCommand As Integer
    Public fsState As Byte
    Public fsStyle As Byte
    <MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst:=6)> ' 6 on x64 …
Run Code Online (Sandbox Code Playgroud)

.net vb.net winapi marshalling readprocessmemory

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

从应用程序的资源加载.NET程序集并从内存运行它,但不终止主/宿主应用程序

介绍


我使用的共享下一个C#代码示例大卫赫弗南 "为从应用程序的资源加载.NET程序集,并从内存中运行它:

Assembly a = Assembly.Load(bytes);
MethodInfo method = a.EntryPoint;
if (method != null)
    method.Invoke(a.CreateInstance(method.Name), null);
Run Code Online (Sandbox Code Playgroud)

在这里,我只是在VB.NET中分享我正在使用的改编:

Public Shared Sub Execute(ByVal resource As Byte(), ByVal parameters As Object())

    Dim ass As Assembly = Assembly.Load(resource)
    Dim method As MethodInfo = ass.EntryPoint

    If (method IsNot Nothing) Then
        Dim instance As Object = ass.CreateInstance(method.Name)
        method.Invoke(instance, parameters)
        If (instance IsNot Nothing) AndAlso (instance.GetType().GetInterfaces.Contains(GetType(IDisposable))) Then
            DirectCast(instance, IDisposable).Dispose()
        End If
        instance = Nothing
        method = Nothing
        ass = Nothing

    Else
        Throw New …
Run Code Online (Sandbox Code Playgroud)

.net c# vb.net reflection .net-assembly

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

更改Inno-Setup卸载程序的默认名称以避免命名冲突

我需要在同一目录中安装几个安装程序,因此它与inno安装卸载程序名称unins000.exeunins000.dat

有没有办法更改Inno-Setup卸载程序的默认名称?

installer inno-setup uninstall uninstallation

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

继承默认的ComboBox以更改边框颜色或禁用它

我正在WinForms项目中工作.

我在Windows中激活了一个黑暗的主题,当它聚焦时,这是一个默认的组合框:

在此输入图像描述

这就是它没有焦点的时候:

在此输入图像描述

当控件失去焦点时,会出现一个可怕且疯狂的白色边框,我希望在项目中不禁用XP样式的情况下避免这种情况.

我知道也许唯一的方法是继承控件来制作我自己的,问题是我不知道我需要用控件做什么,也许更改setstyle属性或者我不知道.

.net c# vb.net user-controls winforms

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

给定一个AutomationId值可以实例化AutomationElement类型吗?

我想知道,在.NET中,如果(托管)Microsoft UI自动化框架提供了某种方法来实例化AutomationElement给定AutomationId窗口值的类型,则以这种方式抑制需要通过窗口句柄或其他类型的窗口来搜索窗口身份标识.

用VB.NET编写的伪示例,用于理解我的目的:

Dim automationId As Integer = 1504
Dim element As AutomationElement = AutomationElement.FromAutomationId(automationId)
Run Code Online (Sandbox Code Playgroud)

.net c# vb.net ui-automation

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

Ruby - 如何使用open-uri获取文件的名称?

我想通过这种方式下载音乐文件:

require 'open-uri'

source_url = "http://soundcloud.com/stereo-foo/cohete-amigo/download"

attachment_file = "test.wav"

open(attachment_file, "wb") do |file|  
  file.print open(source_url).read
end
Run Code Online (Sandbox Code Playgroud)

在该示例中,我想将"Test.wav"更改为真实文件名(例如JDownloader程序).

编辑:我不是指临时文件,我的意思是像Jdownloader这样的网络存储文件得到:"Cohete Amigo - Stereo Foo.wav"

谢谢你的阅读

更新:

我试过这个来存储这个名字:

attachment_file = File.basename(open(source_url))
Run Code Online (Sandbox Code Playgroud)

我认为这没有任何意义,但我不知道如何做到这一点,抱歉.

ruby url uri open-uri http

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

在Listview中将此类扩展为撤消/重做

我正在使用第三方代码来管理WindowsForm项目中的撤消/重做操作.

我需要扩展Class来管理Listview中的撤消/重做操作,这意味着:

·撤消/重做添加/删除项目和子项目

·撤消/重做检查/取消选中行

·撤消/重做其他一些我可能错过的重要事情

我不知道如何开始这样做,代码对我来说太复杂了,关于这个的任何帮助/提示/例子都会让我非常满意,但是在3个月内我无法进行这个改变,我我想我需要很好的解释或完整的例子,这里是代码:

********************************************************
 Undo/Redo framework (c) Copyright 2009 Etienne Nijboer
********************************************************
Run Code Online (Sandbox Code Playgroud)

http://pastebin.com/Gmh5HS4x

(我没有在这里发布代码,因为它超过了StackOverflow的30.000字符限制)

更新:

这是来自作者的一些有用的信息,解释了我需要做的事情来添加Listview支持,但实际上我不能自己:

为列表视图添加功能不应该是那么难,也是了解它如何工作的好方法.您需要创建一个新的监视器,它将捕获listview更改事件并在更改之前存储当前值.如果您检测到已撤消或重做操作所需的所有信息进行了更改,则会创建一个命令.而已.只要您的监视器和命令从基类继承,它就会被自动检测和使用.

http://www.codeproject.com/Articles/43436/Undo-Redo-Framework

更新:

该类的所有者更新了代码,添加了我需要的东西之一,我要求的标签项撤销/重做操作.

·Listview内的撤消/重做文本更改(正常模式或详细信息模式)

Unafortunatelly这个更新不足以让我能够添加我需要的其他撤消/重做操作,请阅读@Plutonix评论解释事物

以下是更新类的一部分,适用于可以提出想法并帮助扩展它的人:

'****************************************************************************************************************
' ListView Undo/Redo Example, (c) Copyright 2013 Etienne Nijboer
'****************************************************************************************************************
' This is an example implementation of the Monitor and Command to add support for listviewitem labeltext changes
' Only the two classes arre needed to add support for an additional control. There were no extra changes needed
' in other code because …
Run Code Online (Sandbox Code Playgroud)

.net vb.net listview undo-redo winforms

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