我的应用程序有一个托盘图标,双击时会隐藏或显示应用程序窗口.我的问题是,如果隐藏窗口处于最小化状态,我似乎无法将窗口置于前台.
例如,假设用户最小化应用程序,然后双击托盘图标.然后隐藏应用程序窗口并从任务栏中消失.当用户再次双击托盘图标时,应该出现应用程序窗口,即应该从最小化状态恢复并将其带到前台.
下面的代码应该这样做,但由于某种原因,它不会:
private void TrayIcon_DoubleClick(object sender, EventArgs e)
{
if (this.Visibility == Visibility.Hidden)
{
this.Visibility = Visibility.Visible;
this.WindowState = WindowState.Normal;
this.Activate();
}
...
}
Run Code Online (Sandbox Code Playgroud)
应用程序保持最小化,不会被带到前台.Activate()返回true,后续调用TrayIcon_DoubleClick()表示状态确实设置为Normal.
我正在为Flash游戏制作机器人,我已经想出如何将所有AutoIt函数导入到我的C#代码中.
string title = "Minesweeper";
string full = auto.WinGetTitle(title,"");
string handle = auto.WinGetHandle(full, "");
if (auto.WinExists(full, "") == 1)
textBox1.Text = "window exists";
addressBox.Text = full;
for (int r = 1; r < 40; r++)
{
auto.ControlClick(full, "", "", "left", 2, r * 10, r * 10);
//auto.ControlClick(handle, "", "", "left", 2, r * 10, r * 10);
}
Run Code Online (Sandbox Code Playgroud)
(我很确定未注释的那个应该是带句柄的那个,反之亦然,但这适用于扫雷.)
因此它适用于扫雷并且不要求它成为活动窗口.当我尝试使其在我的Flash游戏上运行时,它需要Internet Explorer窗口是活动的.这是Flash需要的东西还是还有一些额外的功能可以让游戏最小化时使其工作?
这不必使用AutoIt导入来完成.我也曾在user32 尝试过SendMessage,但这对我来说根本不适用于Flash内容.
我刚刚在随机网站上测试了这个,而不是Flash网站或Minesweeper,并且出于某种原因,如果我从Autoit脚本程序中执行它,而不是来自我的C#程序,代码可以正常运行...
2012年6月20日:我很确定这与句柄传递的方式有关.我已经做了一些测试,调用AutoIt EXE文件并使用我从C#代码获取的句柄作为参数,我必须添加一个0x
,然后在AutoIt代码中我必须从字符串转换为一个HWnd,所以这可能是某种东西,在这种情况下我不知道该怎么做,因为导入的函数依赖于句柄的字符串输入.
我的页面有问题.
每当我最小化窗口时,所有元素的定位都会消失,事情会变得扭曲.
好的,即使应用程序窗口当前处于活动状态,Windows上的Spotify应用程序也没有内置的全局热键和非常基本的热键支持.令人沮丧地"主演"当前播放的歌曲没有键盘快捷键,即使窗口处于活动状态.
所以我有一个Autohotkey脚本,它为我提供全局热键,用于播放控制,音量和复制歌曲标题(包括修复短片),但是我试图找出如何为当前歌曲加注星标.
更重要的是,我只希望Autohotkey脚本为歌曲加注星标(如果它尚未加星标).如果已经加星标,那就别管它了.
我希望当应用程序在托盘中时,所有这一切都发生,而不打开窗口.
所以我提出了一个合理的解决方案,它打开了一个上下文菜单,即使程序被最小化并且做了所有事情,包括不是没有明星的歌曲.不幸的是,上下文菜单意味着它可以在短时间内最大限度地减少游戏等全屏应用程序.取决于可能很痛苦的游戏,但它是我能做的最好的,没有花哨的DLL调用和东西.
#NoEnv ; Recommended for performance and compatibility with future AutoHotkey releases.
SendMode Input ; Recommended for new scripts due to its superior speed and reliability.
SetWorkingDir %A_ScriptDir% ; Ensures a consistent starting directory.
;|---------------|
;|--[ SOURCES ]--|
;|---------------|
;Base Spotify Script from: http://www.autohotkey.com/board/topic/36239-spotify-global-hotkeys/
;Base Starring Script from: http://superuser.com/questions/324416/any-spotify-tweaks-with-keyboard-shortcut-to-star-tracks
;|------------------|
;|--[ SETTING UP ]--|
;|------------------|
DetectHiddenWindows, On ;Detect Spotify even if it's minimized
#IfWinExist ahk_class SpotifyMainWindow ;Only do the following if Spotify is running …
Run Code Online (Sandbox Code Playgroud) 我一直在寻找一种方法来执行此操作,但该/min
命令不会最小化我的 MP3 文件。
这是代码:
start /min song1.mp3 "cd /d %~dp0"
我用来播放 MP3 的程序是 Windows Media Player。
我正在启动Reader 10.0,以便从Win 7系统上的C#程序向打印机发送PDF文件.这就是我现在正在做的事情:
startInfo.FileName = adobeReaderPath;
string args = String.Format("/t \"{0}\" \"{1}\"", this.pdfFileName, this.printerName);
startInfo.Arguments = args;
startInfo.CreateNoWindow = true;
startInfo.ErrorDialog = false;
startInfo.UseShellExecute = false;
startInfo.WindowStyle = ProcessWindowStyle.Minimized;
Process process = Process.Start(startInfo);
Run Code Online (Sandbox Code Playgroud)
我注意到像这样(或从命令提示符)启动Reader实际上启动了2个AcroRd32.exe可执行文件.它们都没有最小化.我也尝试使用相同的结果处理ProcessWindowStyle.Hidden.
有没有办法迫使读者最小化?
谢谢!
我找到了2种捕捉onMinimize事件的方法.
第一:关于FormResize事件:
if MyForm.WindowState = wsMinimized then ......
Run Code Online (Sandbox Code Playgroud)
第二:声明消息处理程序如下:
procedure WMSize(var Msg: TMessage); message WM_SIZE;
Run Code Online (Sandbox Code Playgroud)
然后:
procedure TForm57.WMSize(var Msg: TMessage);
begin
if Msg.WParam = SIZE_MINIMIZED then ....
end;
Run Code Online (Sandbox Code Playgroud)
哪种方式更好?!
我需要一个autohotkey脚本,可以将alt + backspace发送到最小化的chrome窗口(不会最大化它).
基本上,我有一个我制作的网络播放器应用程序,在播放器窗口中打开一个较小的窗口,你可以按alt +退格键,它会在窗口有焦点时静音和取消静音.(javascript活动)
活动窗口信息说:
>>>>( TitleMatchMode=slow Visible Text )<<<<
player.highstrike.org/play/
Run Code Online (Sandbox Code Playgroud)
我想脚本只适用于该URL.我试图将cmds发送到该窗口,但无济于事,有人可以帮助我吗?我真的很赞成它.谢谢.
我在Windows启动时获得了以下代码来运行应用程序:
private void SetStartup(string AppName, bool enable)
{
string runKey = "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run";
Microsoft.Win32.RegistryKey startupKey = Microsoft.Win32.Registry.LocalMachine.OpenSubKey(runKey);
if (enable)
{
if (startupKey.GetValue(AppName) == null)
{
startupKey.Close();
startupKey = Microsoft.Win32.Registry.LocalMachine.OpenSubKey(runKey, true);
startupKey.SetValue(AppName, Application.ExecutablePath.ToString());
startupKey.Close();
}
}
else
{
startupKey = Microsoft.Win32.Registry.LocalMachine.OpenSubKey(runKey, true);
startupKey.DeleteValue(AppName, false);
startupKey.Close();
}
}
Run Code Online (Sandbox Code Playgroud)
有用.但我想让程序最小化(仅在Windows启动时).我没有找到工作代码/很好的解释如何做到这一点.你能帮我吗?
谢谢.
我想通过另一个批处理或 vbs 脚本以最小化模式运行批处理文件。我试过的是:
batch1.bat
@echo off
start /min batch2.bat
Run Code Online (Sandbox Code Playgroud)
批处理文件
@echo off
{my program}
del /f /q batch1.bat >nul
del /f /q batch2.bat >nul
Run Code Online (Sandbox Code Playgroud)
当我尝试此操作时,一切正常,第二批运行并完成其工作,但最后会保留一个最小化的命令提示符窗口,其中显示the windows can not fond the batch file
一个简单的批处理文件路径提示,如命令提示符所示。
如果我只使用exit
命令而不是del /f /q batch2.bat >nul
第二批中的这一行,那么它会按我的意愿工作,但是我的程序在运行后删除 batch2 很重要。
我唯一的目标是以最小化模式运行batch2。所以有什么帮助吗?我也不能在这里使用快捷方式进行批处理。
在此主题上找不到任何好的答案,因此也许有人可以帮我。我正在制作一个小型个人程序,希望将某个应用程序放在前台。它已经可以工作,但是有一个小问题。当过程最小化时,我的代码不起作用。该过程不会像未最小化时那样在前台显示。
这是代码片段:
public partial class Form1 : Form
{
[DllImport("user32.dll")]
static extern bool SetForegroundWindow(IntPtr hWnd);
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
System.Diagnostics.Process[] p
= System.Diagnostics.Process.GetProcessesByName("Client");
if (p.Length > 0)
{
SetForegroundWindow(p[0].MainWindowHandle);
}
else
{
MessageBox.Show("Window Not Found!");
}
}
}
Run Code Online (Sandbox Code Playgroud) Firebug是Web上最好的开发工具.现在,先进的设备齐全的开发人员工具已经转移到每个主流浏览器,我们不需要寻找它.但有时候在共享JSFiddle代码时会打印一些日志console
,或者只是需要窥视html,attributes
或者classnames
只是将Firebug脚本包含在小提琴中而不是提出整个开发人员工具对我来说似乎更方便.
但是当我将Firebug Lite添加到JSFiddle时,它启动就像阻止大多数(如果不是整个输出框架)一样.在我的笔记本电脑上它会阻挡整个画面.
我怎样才能包括Firebug的精简版来的jsfiddle,在最小化模式时,它最小化或者启动后,像作为底部横条这样的形象在右下角的小广场?
我需要检测特定窗口是否已最小化。为此,我发现了两个功能:
1。
function PAIsWindowMinimized(h: HWND): Boolean;
// Detects whether a window is minimized or not
var
wp: Winapi.Windows.WINDOWPLACEMENT;
begin
wp.length := SizeOf(Winapi.Windows.WINDOWPLACEMENT);
Winapi.Windows.GetWindowPlacement(h, @wp);
Result := wp.showCmd = Winapi.Windows.SW_SHOWMINIMIZED;
end;
Run Code Online (Sandbox Code Playgroud)
2。
// Alternative (https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-isiconic):
Winapi.Windows.IsIconic(h);
Run Code Online (Sandbox Code Playgroud)
两种选择中哪一种更可取?还是它们在所有情况下都一样好?