最近常用Window-10 的照片应用,都是从菜单调用。
花了一个小时,尝试用脚本通过命令行调用 照片 加载指定图片,都失败了。
请问有大佬知道如何调用吗?
将你要用的程序设置为该文件类型的默认打开方式,命令行使用资源管理打开,会自动调用,explorer.exe xxx
我希望避免设置为默认。
邮件,然后有一个『打开方式』,可以指定这一次使用哪个程序打开呀。因为 WPS 特别喜欢修改 PDF 文件的打开方式,所以我每一次都用这个方法确保是在浏览器中打开。
对这个WIN 强推的照片应用,真的是够够的。感觉整个开发过程没有人真正使用它,目标功能实现,能交差就行。
完全的鼠标手动操作,自定义完全没有,连个基本的"保存"也没有快捷键,只有鼠标点按钮。
看这提示条,它是固定的,不会消失,经常遮挡重要位置,你能怎么办?只能每个图片都手动点一次关闭。
只知道如何调用到照片本体程序,具体传参试了半天没成功……
第一种思路:通过powershell的start-process参数
#![cfg_attr(not(debug_assertions), windows_subsystem = "windows")]
use std::io::Read;
use std::os::windows::process::CommandExt;
fn main() {
let mut c: Vec<u8> = Vec::new();
let mut f = std::fs::File::open("D:\\desktop\\1.png").unwrap();
let _ = f.read(&mut c);
unsafe {
std::process::Command::new("powershell")
.raw_arg("Start-Process")
.raw_arg("shell:AppsFolder\\Microsoft.Windows.Photos_8wekyb3d8bbwe!App")
//到此处就可以直接打开照片的应用程序了,但是不知道下一步应该传什么参数……通过火绒捕获发现照片接受了打开图片的指针和图片数组的大小,这是直接在准备阶段就传了指针和大小过去?搞不明白……
//
//.raw_arg("-ArgumentList")
//.raw_arg("-ServerName:App.AppXrsrmxw2kqfxg8qs234ywwm8hk94nw24k.mca")//不知道干啥用的但是cmdline始终带着,本来不加还能打开,我一加反而打不开了……
//.raw_arg(c.as_ptr().as_ref().unwrap().to_string())//试图传参,失败……
.creation_flags(0x08000000 | 0x00000200 | 0x02000000)
.spawn()
.expect("Command failed to start");
}
}
第二种思路:通过ie控件调用url链接打开,但我也没能搞明白应该怎么传参……
start-process "C:\Program Files\Internet Explorer\iexplore.exe" "ms-photos://D:\\desktop\\1.png"
找到答案了
省流:
Short answer: No. Universal apps do not support command line options.
Commented Mar 15, 2019 at 19:52
类似的问题:
https://www.tenforums.com/software-apps/16777-how-start-microsoft-photos-command-line.html
省流:
These ‘universal’ apps aren’t characterised like exe’s to use params, it seems. So you can launch them from a command line or powershell, for example, but not with a parameter.
最后一线希望:
但是,需要app原生支持传参,现在问题来了,咱们咋知道PhotosApp.exe
这玩意能接受啥参数呢……
copilot说能用“start ms-photos:viewer?file=<图片路径>”调用UWP照片打开图片,但我试过了不行。
从Windows资源管理器里打开图片的时候,在任务管理器cmdline里看不到UWP照片启动时有任何图片路径参数,大概不是用传统命令行的方式传递参数的,而是用Windows API的方式传递的。
所以目前来说对于楼主这个问题大概只有两个曲线方案:
1、先打开资源管理器,再从资源管理器的打开方式里选择UWP照片。
2、给图片关联UWP照片,这样就能双击图片启动UWP照片了。