MSDN教程中的一个错误--"How to: 使用TCP在Windows服务中托管WCF "的错误
过去2天,我一直在撞击一个砖墙,试图在MSDN上成功使用此示例: 如何:如何:使用tcp /p> 如果您遵循示例并将消费者应用程序放置在同一解决方案中,则它可以成功运行 - 即使关闭了服务! 如果已打开服务并发布了消费者应用程序以说出其他网络驱动器,则由于WCF没有侦听,因此不会运行它. 演练中的以下代码是罪魁祸首: protected override void OnStart(string[] args) { if (myServiceHost != null) { myServiceHost.Close(); } myServiceHost = new ServiceHost(typeof(Service1)); myServiceHost.Open(); } 我的朋友注意到,如果我们将new ServiceHost(typeof(Service1));更改为new ServiceHost(typeof(Wc
0 2023-12-08
编程技术问答社区
如何获得WP7控件的默认样式和控件模板?
他们具有在MSDN上发布的WPF和Silverlight控件的样式和模板. 但不是为WP7控件. 那么,如何获得WP7控制的默认样式和控制模板? 解决方案 在您的SDK文件夹中 C:\Program Files (x86)\Microsoft SDKs\Windows Phone\v7.0\Design 或 C:\Program Files (x86)\Microsoft SDKs\Windows Phone\v7.1\Design 您会找到System.Windows.xaml和ThemeResources.xaml以及主题的EAH文件夹.
0 2023-12-08
编程技术问答社区
在MSI卸载过程中,究竟是如何删除文件的?
我想知道在卸载过程中安装的文件/组件到底发生了什么. 对于安装和升级过程,可靠的文档在MSDN上存在(请参阅 default file File file版本 . 无论如何,我找不到卸载的文档在MSDN或WIX的文档中删除逻辑. 所以,我的问题很简单:我想知道何时从系统中删除文件何时(并非总是如此) P> 我发现的最接近的是以下msdn link 提供一些建议,但基本上说:"自己测试". 这对我不满意,因为我想知道我是否可以依靠MSI的当前行为,然后再将任何使用此行为的安装人员运送给客户. 我正在寻找以下问题的可靠答案: 在哪些情况下 - 除了明确的"永久性"定义或使用SharedDllRefCount - 文件/组件是否可以在卸载操作中幸存? 如果现在DLL的版本比安装时(由于热补丁左右)时更高的版本,是否可以安全地将其删除?注意:我对此进行了测试,当前答案是肯定的,但是我需要知道这是否是预期的行为,以及我是否可以依靠它. 解决方案 MSI
0 2023-12-07
编程技术问答社区
如何为Windows编写一个新的Alt+Tab任务切换器?
我被告知,处理ALT+选项卡输入的程序称为任务切换器.但是我对库存提供的任务切换器不满意. 任何人都可以向我推动正确的方向,所以我知道我如何独自写一个并用新旧的写作? 并不是我没有编程经验,我只是不知道从哪里开始. :D 谢谢! 解决方案 有三种基本要素用于在Windows中编写替换切换器(在Windows 7下进行了测试): 捕获Alt+Tab:为此,我将使用低级键盘钩(WH_KEYBOARD_LL). 列举您可以在之间切换的窗口:两个选项是 EnumWindows 或UI自动化框架(托管代码可以使用 System.Windows.Automation ). 执行开关:您可以使用 SwitchToThisWindow 或 SetForegroundWindow ,但无论哪种情况,您都需要设置 uiAccess=true 在您的清单中.这还将要求您签署可执行文件并将其安装在程序文件中.您 不需要致电AttachThreadInput或执行其他这
0 2023-12-07
编程技术问答社区
在MEMORY_BASIC_INFORMATION结构中,BaseAddress和AllocationBase之间有什么区别?
在MSDN中,我找到了以下" " baseaddress-指向页面区域的基础地址的指针. 分配基础 - 指向通过VirtualAlloc函数分配的一系列页面的基础地址. BaseadDress成员指向的页面包含在此分配范围内. ,但我不明白有什么区别.谁能告诉我区别? (不喜欢MSDN :)) 解决方案 窗口上的虚拟内存分配是用粒度为64千元的粒度制成的.但是虚拟内存页面为4096字节,system_info.dwpagesize的值. 当您将虚拟内存分配给VirtualAlloc时,您将始终获得一个块,其baseaddress等于分配基库.但是,如果然后更改此块中一个或多个页面的页面保护,那么您可以观察到与不同的baseaddress细分的块.使用示例程序最好显示,在MSVC ++上运行此操作: #include "stdafx.h" #include #include #include
0 2023-12-07
编程技术问答社区
EnumDisplayDevices函数对我不起作用
我试图以编程方式获取我的监视器的信息.循环的内容现在并不重要,它们只包含在满足循环条件时打印的调试语句.目前,外循环代码执行三次,而内部循环代码永远不会访问,这意味着(内部)循环的段条件永远不会真实,这意味着呼叫失败. 我的问题是Windows API对此功能说: 要在显示器上获取信息,请首先调用带有LPDEVICE>设置为null的EnumdisPlayDevices.然后将其设置为display_device.devicename>从第一个调用到EnumdisPlayDevices,并将IDEVNUM设置为零.然后> display_device.devicestring是监视器名称. ...但是,即使做到了完全说的话,第二个Enumdisplaydevices呼叫总是会失败吗?任何见解??? 还在Windows XP和Windows 7上作为服务级别的应用程序,并获得相同的结果.当我尝试打印出dd.devicename时,它给了我一个地址(例如:0x12cf
0 2023-12-07
编程技术问答社区
如何对完整的桌面进行屏幕截图 Windows c#
下面的代码仅在桌面窗口中屏幕截图.我的期望是使用任务栏和用户可见的所有内容进行屏幕截图. 任何帮助将不胜感激 ''' { //Creating a new Bitmap object Bitmap captureBitmap = new Bitmap(1024, 768, PixelFormat.Format32bppArgb); //Bitmap captureBitmap = new Bitmap(int width, int height, PixelFormat); //Creating a Rectangle object which will //capture our Current Screen Rectangle captureRectangle = Screen.AllScreens[0].Bounds; //Creating a New Grap
0 2023-12-07
编程技术问答社区
在Windows中,文件夹及其子文件夹内的所有文件列表
我想通过访问" C:\ Windows \ System32 \ Tasks"中的所有文件来列出在任务调度程序下运行的所有文件. 该程序应递归地在目录中打开子文件夹并列出所有文件.我目前使用 Windows OS . 我尝试使用com库,但没有在子文件夹中显示任务.我有60个任务,但仅显示12个.因此,我试图通过任务文件夹迭代. #include #include int main(void) { DIR *dir; struct dirent *de; if ((dir = opendir("C:\\Windows\\System32\\Tasks")) != NULL); { printf("The startup Programs are:\n"); while ((de = readdir(dir)) != NULL) {
0 2023-12-07
编程技术问答社区
驱动器号的接口类型
鉴于其驱动器字母(例如g :)?具体来说,正在寻找不依赖WMI的解决方案. 谢谢. 解决方案 您可以使用要获取基本接口类型(即:可移动设备,CDROM,RAMDISK),请参见该页面底部的最终评论,以获取有关可移动设备的更多信息.还请查看她是我能想到的最好的例子(没有测试,因为我没有WDK/DDK) bool IsUSBDevice(const char* szDrivePath, bool& bRemovable) { if(GetDriveType(szDrivePath) != DRIVE_REMOVABLE) return false; HANDLE hDevice = CreateFile(szDrivePath,0,FILE_SHARE_READ|FILE_SHARE_WRITE,NULL,OPEN_EXISTING,0,NULL); if(hDevice == INVALID_HANDLE_VAL
0 2023-12-07
编程技术问答社区
SetComputerNameEX返回成功,但重启后计算机名称没有改变
我正在尝试使用SetComputerNameEx()更改域计算机的计算机名称.该功能返回成功,但是当我重新启动计算机时,它仍然具有旧的计算机名称. SetComputerNameEx()在非域机器上完美工作,我仅在域计算机上面临此问题.我想念什么吗? 编辑:我正在使用以下代码. BOOL ChangeCompName(CString csCompName) { if( !SetComputerNameEx(ComputerNamePhysicalDnsHostname,csCompName.GetBuffer())) { _tprintf(L"Failed to set Physical DNS name %d\n",GetLastError()); return FALSE; } else { _tprintf(L"Computer name change Success\n");
0 2023-12-07
编程技术问答社区
如何检测媒体是否被插入到可移动驱动器/读卡器中
我有一个读卡器(没有记忆棒). 当我插入组成器时,它在计算机中显示一个空驱动器... 是否可以知道驱动器是否有媒体(对不起,我不确定如何称呼它)... 解决方案 我发现 msalters的建议使用IOCTL_STORAGE_CHECK_VERIFY非常好. IOCTL_STORAGE_CHECK_VERIFY的使用中有一个小技巧.在函数DeviceIoControl中使用IOCTL代码之前,需要使用CreateFile函数打开相应的设备: HANDLE hDevice = CreateFile (szDeviceName, // like "\\.\E:" 0, // no access to the drive FILE_SHARE_READ | FILE_SHARE_WRITE, // share mode
0 2023-12-06
编程技术问答社区
在Windows上解决相对路径而不参考当前目录
我有一个Windows CPP应用程序,我想在不更改当前目录的情况下解决相对于特定目录的路径.这意味着我不能使用GetFullPathName,因为它相对于当前目录可以解析路径.由于这是一个安全敏感的问题,我宁愿自己滚动,而是使用批准的API. 我四处寻找一个很好的答案,但找不到任何东西.对于Web服务器或多线程环境来说,这当然是一个常见问题.其他人如何做到这一点?任何帮助将不胜感激. 例如:当数据在C:\appfolder\data中时,您从C:\appfolder\exes\myapp.exe运行应用程序.我想解决sillyfolder\..\mydata.txt C:\appfolder\data\mydata.txt. 解决方案 看来,标准(C ++或Win32)库不为您执行此操作.但是,采取相对的道路是一个很好的锻炼.以下是一些有用的链接来查看如何开始(将脚本视为 pseudocode ): Windows CMD:从绝对路径获取相对路径 maker
0 2023-12-06
编程技术问答社区
为什么UiPath检测到的ctrlid格式与它们的XSLT表示中的文件格式不同?
为什么由 uipath Studio检测到的格式与其 xslt表示的记录格式不同?表示? 目前,我正在与Uipath合作,以自动化一些工作流程. 环境详细信息: SAP客户端:IDES ECC 6.0含. EHP7 主机机器:Intel Core i3 CPU,带64位-Windows 8 System. 尝试识别SAPTreeList/SAP's Advanced Treelist中的元素时,Uipath似乎以以下格式检测ctrlid: 快照: msdn.msdn.microsoft.com :
0 2023-12-06
编程技术问答社区
对SYSTEMTIME进行算术运算
我有一个时间值在系统时间中表示,我想从中添加/减去1小时并获得新获得的系统时间.我希望转换应照顾加法/减法或每月更改或E1年更改的日期更改. 如果有一些Windows API在SystemTime上确实有算术 ,有人可以帮助我. 解决方案 如果您使用的是C#(或VB.NET或ASP.NET),则可以使用 DateTime dt = DateTime.Now.AddHours(1); 您可以使用负数来减去: DateTime dt = DateTime.Now.AddHours(-1); 编辑: I extract an asnwer from this post 他们建议将系统时间转换为filetime,这是许多 自个时代以来的滴答声.然后,您可以添加所需的" tick"数量 (即100ns间隔)指示您的时间,然后转换回 系统时间. ularge_integer结构是与QuadPart成员的结合, 一个64位数字,可以直接添加到(最近的硬件上)
0 2023-12-06
编程技术问答社区
为win32控制台应用程序设置库路径
当我尝试执行简单的" Helloworld" Win32控制台应用程序时,我找不到"找不到DLL:重新启动应用程序可能会解决问题"错误. 我知道.dll的位置. 从命令提示符执行.EXE时如何指定其位置? ps:将.dll复制到.EXE的当前DIR似乎可以解决问题,但是在这种情况下,此方法不合适. 解决方案 dll加载在窗户的管道深处发生. 如果在与应用程序的目录中未找到DLL,则自动扫描该路径以找到目录. 因此,对问题的最简单答案是将包含DLL的目录添加到您的路径中.根据您的代码需要加载DLL的时间,您可以(临时)从" Helloworld"应用程序中修改路径. 其他解决方案 loadlibraryex 关于Windows如何搜索您的DLL的讨论.您可以尝试使用load_with_altered_search_path Flag,如果您可以构造DLL的完整路径或使用 setDlldirectory 函数将目录添加到搜索路径中. 其他解决方案 手
0 2023-12-05
编程技术问答社区
64位进程的ReadProcessMemory总是返回错误299
我在ReadProcessMemory上遇到了一些麻烦 我的代码是64位 我可以阅读任何32位进程的内存,但是readProcessMemory总是会因错误代码299(部分读取)返回0字节读取. 完成了我的研究,大多数答案都与特权有关,但是我已经启用了令牌并作为管理员运行,我在PE可选标题中读取imagebase的地址 我尝试使用VirtualQueryEx检查页面状态并被拒绝访问! 注意:代码在任何32位进程上都完美运行. 有什么想法可能导致这个? HANDLE hProcess; DWORD pid; EnableDebugPriv(); pid=GetProcessByName("winmine.exe"); //32 bit apps work //pid=GetProcessByName("notepad.exe"); //64 bit apps dont hProcess = OpenProcess(PROCESS_ALL_ACCESS ,0,
0 2023-12-05
编程技术问答社区
我在哪里报告一个Windows核心库的问题?
如何让Microsoft知道我在其核心库例程之一中发现的问题?他们有一个中央存储库来报告这些东西吗? 我不是Microsoft开发网络(MSDN)的成员. 还是我什至应该打扰? 解决方案 我不知道为什么 chrisn 取回了他的答案.他今天早些时候看到了它,他说: 您可以在 Microsoft Connect网站上报告错误 过去的).您不必拥有MSDN 订阅. 我没有听说过Microsoft Connect网站,但是当我在那里使用搜索框搜索"注册表Unicode"时,列出的第一个条目与我遇到的一个非常相似. and 我没有Microsoft Connect网站的经验,但是如果事实证明它看起来很有前途,这可能是我问题的答案. 其他解决方案 没有正式的方法向微软为最终用户报告错误.如果您正在参加即将发布的Beta程序,则Beta程序包括一个错误报告的频道.否则,如果该错误导致您想解决的问题,则可以致电Microsoft支持,它们将帮助您解决该问题(无论
0 2023-12-05
编程技术问答社区
为什么MemoryBarrier可以被实现为对xchg的调用?
在msdn // x86 FORCEINLINE VOID MemoryBarrier ( VOID ) { LONG Barrier; __asm { xchg Barrier, eax } } 我在"软件开发人员手册"中找不到一些材料. 请告诉我原因. 解决方案 来自Intel 64和IA-32架构软件开发人员手册,第3卷:"系统编程指南" 8.2.5"增强或削弱记忆顺序模型" 多处理器系统中的同步机制可能取决于 在强大的内存顺序模型上.在这里,程序可以使用锁定 诸如XCHG指令或锁定前缀之类的说明以确保 在内存上进行了读取的修饰作业操作 原子.锁定操作通常像I/O操作一样操作 在那个中,他们等待所有以前的说明完成和 所有缓冲的写作都以排水为记忆(请参阅第8.1.2节,"巴士 锁定"). 和8.1.2: 锁定操作相对于所有其他内存都是原子 操作和所有外部可见事件. 唯一的指示提取 和页面访问可以通过锁定的说明.锁定 说明可用于同步一个由一个处理器
0 2023-12-05
编程技术问答社区
微软怎么能说WinAPI中一个字的大小是16位?
我刚刚开始学习Winapi.在MSDN中,为数据类型提供以下说明. 字 一个16位未签名的整数.范围为0至65535小数. 此类型在Windef.h中声明如下: Typedef无签名的短词; 很简单,并且与我一直在学习的其他资源相匹配,但是它如何能确定地说它是16位? 短/短int/签名的短/签名短int 简短签名的整数 类型. 能够至少包含[-32767,+32767]范围;因此, 它至少是大小16位. 因此,根据C标准,A short的大小很可能是32位.但是谁决定无论如何都将使用什么尺寸?我发现实用说明在这里.具体而言,该行: ...这取决于两个处理器(更具体地说,ISA,指令 设置体系结构,例如x86和x86-64)和编译器,包括 编程模型. 所以这是ISA,我想这很有意义.这是我迷路的地方.看一下 Windows页面在Wikipedia上P> 平台 ARM,IA-32,ITANIUM,X86-64,DEC ALPHA,MIPS,P
0 2023-12-05
编程技术问答社区
在windows7-32位系统上获取磁盘驱动器结果的信息
当我在Windows XP -32上运行以下代码时,我会得到以下结果. 我只插入一个USB笔驱动器 On Windows XP - 32 Bit ----------------------- Drive C: ProductId: ST3160215AS ProductRevision: 3.AAD DeviceType: 7, DeviceNumber: 0, PartitionNumber: 1 DevicePath: \\?\ide#diskst3160215as_____________________________3.aad___#5&2 7db0ed4&0&0.0.0#{53f56307-b6bf-11d0-94f2-00a0c91efb8b} Class: DiskDrive Hardware ID: IDE\DiskST3160215AS_____________________________3.AAD_
0 2023-12-05
编程技术问答社区