我一直在努力从应用程序中隐藏任务栏中的另一个应用程序.
我一直在使用SetWindowLong函数来设置/删除扩展样式上的WS_EX_APPWINDOW .
我已尝试单独设置和删除属性以及获取当前WindowLong,并删除/添加到该属性,如下所示:
SetWindowLong(pMainWindow, GWL_EXSTYLE, GetWindowLong(pMainWindow) & WS_EX_APPWINDOW);
Run Code Online (Sandbox Code Playgroud)
并尝试删除它:
SetWindowLong(pMainWindow, GWL_EXSTYLE, GetWindowLong(pMainWindow) & ~WS_EX_APPWINDOW);
Run Code Online (Sandbox Code Playgroud)
在没有先让窗口长的情况下也尝试了这两种方法.这是我的整个代码:
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
[DllImport("User32.dll")]
public static extern int SetWindowLong(IntPtr hWnd, int nIndex, int dwNewLong);
[DllImport("User32.dll")]
public static extern int GetWindowLong(IntPtr hWnd, int nIndex);
[DllImport("user32.dll")]
static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);
private const int SW_HIDE = 0x00;
private const int SW_SHOW = 0x05;
private const int WS_EX_APPWINDOW = 0x40000;
private const …Run Code Online (Sandbox Code Playgroud) 我一直在尝试在ClickOnce应用程序上禁用DPI感知.
我很快发现,无法在清单中指定它,因为ClickOnce不支持清单文件中的asm.v3.
我找到的下一个选项是调用新的Windows函数SetProcessDpiAwareness.
根据本教程,
在创建应用程序窗口之前调用SetProcessDpiAwareness.
而本教程中,
您必须在任何Win32API调用之前调用SetProcessDpiAwareness
你必须尽早调用这个函数.所以,为了测试,我创建了一个完全空白的WPF应用程序,并将其作为我的整个App类:
[DllImport("SHCore.dll", SetLastError = true)]
private static extern bool SetProcessDpiAwareness(PROCESS_DPI_AWARENESS awareness);
[DllImport("SHCore.dll", SetLastError = true)]
private static extern void GetProcessDpiAwareness(IntPtr hprocess, out PROCESS_DPI_AWARENESS awareness);
private enum PROCESS_DPI_AWARENESS
{
Process_DPI_Unaware = 0,
Process_System_DPI_Aware = 1,
Process_Per_Monitor_DPI_Aware = 2
}
static App()
{
var result = SetProcessDpiAwareness(PROCESS_DPI_AWARENESS.Process_DPI_Unaware);
var setDpiError = Marshal.GetLastWin32Error();
MessageBox.Show("Dpi set: " + result.ToString());
PROCESS_DPI_AWARENESS awareness;
GetProcessDpiAwareness(Process.GetCurrentProcess().Handle, out awareness);
var getDpiError = Marshal.GetLastWin32Error();
MessageBox.Show(awareness.ToString());
MessageBox.Show("Set DPI error: …Run Code Online (Sandbox Code Playgroud) 使用asp.net 5 beta-8,我有这样的东西注册为服务:
services.AddTransient<IMyClass, MyClass>();
Run Code Online (Sandbox Code Playgroud)
当我在控制器中的属性上使用此属性时,myClass将设置为该实例IMyClass.
public class HomeController : Controller
{
[FromServices]
public IMyClass myClass { get; set; }
public IActionResult Index()
{
//myClass is good
return View();
}
}
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试在不继承的类中使用它时Controller,它似乎没有将myClass属性设置为以下实例IMyClass:
public class MyService
{
[FromServices]
public IMyClass myClass { get; set; }
public void DoSomething(){
//myClass is null
}
}
Run Code Online (Sandbox Code Playgroud)
这是预期的行为吗?如何在常规类中注入依赖项?
我正在尝试使用调度程序创建第二个线程,以便我可以让主要调度程序(对于UI)完全没有压力,并且让UI不断响应.
现在,我可以为每个sub(或C#中的void)创建多个线程,但是我不可能创建一个新线程并抓住它的调度程序,并调用它吗?这就是我所做的:
Private CheckLoopThread As New System.Threading.Thread(New System.Threading.ThreadStart(AddressOf CheckLoop))
CheckLoopThread.Priority = System.Threading.ThreadPriority.Lowest
CheckLoopThread.Start()
Dim Test As Windows.Threading.Dispatcher = Windows.Threading.Dispatcher.FromThread(CheckLoopThread)
Run Code Online (Sandbox Code Playgroud)
但是,变量"Test"在执行"Nothing"之后.这怎么可能?是另一种创建第二个调度程序的方法吗?
答案在任何.NET表单中都很受欢迎.Visual Basic或C#.我在.NET 4.0框架上使用VB.NET WPF.
提前致谢.
我一直在讨论如何在PHP中获取> = 2 GB的文件的有效文件大小.
示例
这里我使用filesize()函数检查大小为3,827,394,560字节的文件的文件大小:
echo "The file is " . filesize('C:\MyFile.rar') . " bytes.";
Run Code Online (Sandbox Code Playgroud)
结果
这是它返回的内容:
该文件是-467572736字节.
背景
PHP使用有符号整数,这意味着它可以表示的最大数量是2,147,483,647(+/- 2 GB).
这是有限的地方.
我正在开发一个使用作用域 CSS 的 Blazor 应用程序,但是当我尝试使用 Azure Pipelines 构建它时,不会生成作用域 CSS 文件。我在一台可以通过 RDP 访问的本地计算机上构建,并且我发现该wwwroot/{assemblyname}.styles.css文件在运行后完全丢失dotnet publish
当我在同一台计算机上运行 Azure Pipelines 手动显示的确切命令时,它就存在并且工作得很好。
任务azure-pipelines.yml:
- task: UseDotNet@2
inputs:
packageType: 'sdk'
version: '5.x'
...
- task: DotNetCoreCLI@2
condition: succeeded()
displayName: Publish my.project.blazor
inputs:
command: 'publish'
publishWebProjects: false
projects: 'src\my.project.blazor\my.project.blazor.csproj'
arguments: '/p:Version=$(MainVersion).$(Patch) -o $(PublishFolder) -c Release -v d'
zipAfterPublish: false
modifyOutputPath: false
Run Code Online (Sandbox Code Playgroud)
管道构建开始:
Starting: Publish my.project.blazor
==============================================================================
Task : .NET Core
Description : Build, test, package, or publish a dotnet application, or run …Run Code Online (Sandbox Code Playgroud) 我试图"挂钩"窗口的消息以检测最小化/最大化.我环顾四周,并认为这样做的唯一/最佳解决方案是挂钩窗口的消息,并检查WM_WINDOWPOSCHANGED消息,然后检查它的状态.
我遇到了一个问题.
System.Windows.Interop.HwndSource source = System.Windows.Interop.HwndSource.FromHwnd(System.Diagnostics.Process.GetProcessesByName("notepad")[0].MainWindowHandle);
System.Windows.Interop.HwndSourceHook hook = new System.Windows.Interop.HwndSourceHook(WndProc);
source.AddHook(hook);
Run Code Online (Sandbox Code Playgroud)
它会给我一个"对象引用不设置为对象的实例"."source.AddHook ..."上的错误.在断点时,也清楚源变量为空.换句话说:它无法在第一行获得HwndSource.
我知道可以使用"WindowInteropHelper",但是当你将实际窗口作为Windows.Window可用时,但在我的情况下,我没有.
RenéSackers 非常感谢任何解决方法/解决方案
PS我在执行代码时100%确定记事本是否正在运行,它设法找到它,它是主窗口句柄.