使用c#获取在其他应用程序的文本框中输入的文本

我整天都在和这件事打架。 我仍然无法找到确切的解决方案。 帮帮我。 我的目标非常简单。 我想获取其他应用程序的文本框中的文本。 它可能是gtalk客户端或soap UI屏幕的文本框。 我用谷歌搜索,大多数论坛建议winapi是我必须用来实现这一目标的概念。 我从未使用过这个概念,也没有得到任何好的例子。 请帮助我解决这个问题,并完成这件事。 有没有其他方法来实现这一目标? 等待你的回复…

如何在C#应用程序中显示任务栏通知?

我想在我的应用程序中显示任务栏通知。 我怎样才能在C#中实现这一目标?

异步添加到ObservableCollection(或替代)

这就是我所拥有的 – 一个ListBox,其ItemsSource设置为ObservableCollection – 其中T是我的自定义类,表示一个文件,只包含2个DependencyProperties:Filename和ThumbnailPath。 – 列表框还定义了自定义DataTemplate,以便在其下很好地显示图像和文件名。 列表框的目的是显示当前文件夹中的video文件(在TreeView中选择),缩略图(异步生成;不是此问题的一部分)。 因此,当我更改TreeView中的文件夹时,ObservableCollection将被清除并再次填充,这将自动反映在ListBox项目中。 问题在于:UI变得无法响应,更新需要几秒钟。 同样,缩略图在这里没有意义(我尝试禁用它们)。 我认为花费最多时间的是构建我自定义类的50-100个实例及其可视化表示 – 它必须为每个实例初始化一个Image对象。 但这只是我的猜测 – 你能否确认或排除这种可能性? 我开始认为ObservableCollection可能不是这里的方式 ,因为根据我的阅读和我尝试的内容,没有办法异步添加项目,至少如果这些项目是DependencyObjects。 我尝试使用BackgroundWorker创建我的类实例,并将它们添加到ProgressChanged事件处理程序中的集合中,但它会抛出exception(某些线程与dependencyobjects问题)。 有什么东西我不见了吗? 或者通过简单地抛弃ObservableCollection并编写一个好的旧异步for循环来添加项目,我会更好吗?

prism:ViewModelLocator.AutoWireViewModel =“True”对于未引用的程序集不起作用

我在引导程序中加载我的模块: protected override IModuleCatalog CreateModuleCatalog() { var moduleCatalog = new DirectoryModuleCatalog(); moduleCatalog.ModulePath = @”.\Modules”; return moduleCatalog; } 在shell项目中引用模块的项目时,它可以正常工作。 正确的ViewModels将由以下附加属性注入。 <UserControl prism:ViewModelLocator.AutoWireViewModel="True" [..] 除非删除项目引用,否则棱镜将不再设置ViewModel:ViewModelLocator.AutoWireViewModel =“True”。 有谁知道是什么原因引起的? 您可以在项目https://github.com/mfe-/Get.the.solution.Prism.Demo上观察此行为。 我怎样才能解决这个问题?

为什么我需要引用一个我没有直接使用的dll?

我有从外部开发人员那里收到的源代码,这个代码分为4种类型的项目:他们的框架,我的项目的环境(让我们称之为“ENV”),应用程序库(称之为“Base”)和应用程序本身(大约20个dll我将统称为“App”)。 现在,我已经为这个混乱添加了另一层,一个名为AdvanceFeatures的dll。 它位于ENV(框架顶部)的正下方。 这个dll只引用框架,ENV引用它。 只有ENV使用这个AdvanceFeatures dll,而Base和App只使用ENV。 我在这里工作的方式是App中的大多数对象都在Base中定义,并在ENV中inheritance/实现类/接口。 这些对象中的一小部分(在App和Base中)从框架本身inheritance/实现类/接口(但这种情况非常罕见)。 除了一个事实,到目前为止一切都很顺利。 编译器要求我将从App中的每个dll和Base中添加对AdvanceFeatures dll的引用。 我没有在ENV之外使用AdvanceFeatures,那么为什么需要这些引用呢? 编辑:我已经为这个问题创建了一个演示项目。 这是项目细节: Assembly: AdvanceFeatures References: Nothing (Reference project-folder is empty) Classes: Decorator, IEnvClass, IDecorator IDecorator contents: namespace AdvanceFeatures { public interface IDecorator { IEnvClass Decorated { get; } void Decorate(); } } IEnvClass contents: namespace AdvanceFeatures { public interface IEnvClass { string Name […]

C#big-endian UCS-2

我目前正在开发的项目需要与我们没有建立的客户端系统进行交互,因此我们无法控制数据的发送方式。 问题是在C#中工作,它似乎对UCS-2没有任何支持,对big-endian的支持很少。 (据我所知) 我想知道的是,如果我在.net中查看过任何内容,或者其他人已经制作并发布了我们可以使用的内容。 如果不是,我将采用自定义方法对其进行编码/解码,如果可能的话。 但无论如何,谢谢你的时间。 编辑:BigEndianUnicode 确实正确解码字符串,问题是接收其他数据作为大端,到目前为止使用IPAddress.HostToNetworkOrder()如其他地方建议允许我解码一半的字符串(Merli?是出现的和它应该是Merlin33069) 我梳理短代码,看看是否错过了另一个长度变量 解决方案:在确定了bigendian变量是主要问题后,我回过头来查看详细信息,似乎字符串的长度是以字符数发送的,而不是字节数(在utf中它似乎是char是两个所有我需要做的就是加倍,然后就解决了。 感谢大家的帮助。

在C#/ .NET中访问MAX_PATH之外的文件

背景 我需要编写一个使用.NET 2.0版本的工具(由于政治,商业和机密性/信任原因,使用现成的东西不是这个客户的选项)通过网络将文件从一个服务器迁移到另一个服务器。 服务器是本地团队的文件服务器,需要将某些团队文件夹迁移到其他服务器以便于重组。 基本的想法是我们读取每个文件并在数小时内通过网络流式传输,几天后数据将被迁移。 需要保留文件权限。 由于这需要几天时间(我们正在谈论几千兆字节的数据,对于某些团队而言),我们需要每晚迭代文件并比较修改日期并更新已更改的日期。 理论上,最终新服务器将拥有最新的文件副本,用户可以切换到新服务器。 它当然不是那么简单,但我们有一个我们认为应该工作的设计:) 问题 所以从理论上讲,我们只需打开文件,通过网络流式传输,然后在另一端写入,对吧? 🙂 不幸的是,在服务器本身,文件共享是在文件夹路径创建的,例如: D:\ Data \ Team Shares \ DIVISION \ DEPARTMENT \ NAME OF TEAM – 可能会长篇大论 对于每个用户,此路径映射到驱动器,例如,它将作为\\ SERVER \ TEAMNAME共享并映射到T:驱动器。 这导致了从T:驱动器可见的文件在MAX_PATH限制范围内的情况,但是当在服务器本身上本地查看时,它们会超出它。 我们无法使用网络共享来访问文件,因为这个工具需要是通用的,要在数百个这样的服务器上运行,并且没有标准的方法来判断哪些文件共享是我们应该移动的文件共享,哪些不是 – 有甚至没有命名约定标准。 此外,偶尔会有其他股份的子股,因此我们超过MAX_PATH限制两倍! 我知道使用“\\?\”前缀指定路径的解决方法,该路径将路径视为UNC路径,并允许理论上最多32k个字符。 这种解决方法是在Win32 API级别实现的,System.IO命名空间(大部分)基本上只是本机Win32 API函数的一个薄包装,但是在将调用交给API之前,Microsoft已经“帮助”实现了额外(不正确)的validation。 。 在这种情况下,.NET Framework拒绝该路径,因为它声称’?’ 是一个无效的路径字符。 所以我的问题是……有没有一种方法我没有想到这将允许我解决这个问题,而不必完全重写几乎整个System.IO命名空间,加载P / Invoke调用,只是为了删除这个烦人的validation?

GridView上的弹出式引导程序模型使用RowCommand事件进行单击

我有一个Bootstrap Model弹出窗口: × ADD NEW BANQUET Banquet ID: Banquet Name: 而GridView是: <asp:Label ID="lblID" runat="server" Visible="false" Text='’> <asp:Label ID="lblName" runat="server" Text='’ > Events 这是RowCommand事件: protected void gvBanquet_RowCommand(object sender, GridViewCommandEventArgs e) { GridViewRow row = (GridViewRow)(((Control)e.CommandSource).NamingContainer); int index = row.RowIndex; string id = GetTextFromGridViewLabel(gvBanquet,index,”lblID”); string name = GetTextFromGridViewLabel(gvBanquet, index, “lblName”); switch (e.CommandName) { case “EditRow”: lblID.Text = […]

entity framework核心:在上一个操作完成之前,在此上下文中启动了第二个操作

我正在使用Entity Framework Core开发ASP.Net Core 2.0项目 在我的一个列表方法中,我收到此错误: InvalidOperationException: A second operation started on this context before a previous operation completed. Any instance members are not guaranteed to be thread safe. Microsoft.EntityFrameworkCore.Internal.ConcurrencyDetector.EnterCriticalSection() 这是我的方法: [HttpGet(“{currentPage}/{pageSize}/”)] [HttpGet(“{currentPage}/{pageSize}/{search}”)] public ListResponseVM GetClients([FromRoute] int currentPage, int pageSize, string search) { var resp = new ListResponseVM(); var items = _context.Clients .Include(i => i.Contacts) […]

ASP.NET MVCunit testing自定义AuthorizeAttribute

我正在研究ASP.NET MVC 4项目(.NET框架4),我想知道如何正确地unit testing自定义AuthorizeAttribute(我使用NUnit和Moq)。 我AuthorizeCore(HttpContextBase httpContext)了2个方法: AuthorizeCore(HttpContextBase httpContext)和HandleUnauthorizedRequest(AuthorizationContext filterContext) 。 正如您所看到的,这些方法分别需要HttpContextBase和AuthorizationContext ,但我不知道如何模拟它们。 这是我得到的: [Test] public void HandleUnauthorizedRequest_UnexistingMaster_RedirectsToCommonNoMaster() { // Arrange var httpContext = new Mock(); var winIdentity = new Mock(); winIdentity.Setup(i => i.IsAuthenticated).Returns(() => true); winIdentity.Setup(i => i.Name).Returns(() => “WHEEEE”); httpContext.SetupGet(c => c.User).Returns(() => new ImdPrincipal(winIdentity.Object)); // This is my implementation of IIdentity var requestBase […]