第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用 AppID 在 WIndows 中啟動應(yīng)用程序并獲取 pid

使用 AppID 在 WIndows 中啟動應(yīng)用程序并獲取 pid

Go
慕斯709654 2023-02-14 15:18:53
我正在嘗試使用他們的 AppID 啟動 Windows 應(yīng)用程序,例如Microsoft.WindowsCalculator_8wekyb3d8bbwe!App我通過調(diào)用獲得的Get-StartApps目前我可以啟動應(yīng)用程序但無法獲得正確的 PIDcmd = exec.Command("powershell", "start", `shell:AppsFolder\Microsoft.WindowsCalculator_8wekyb3d8bbwe!App`)err := cmd.Start()fmt.Println(cmd.Process.Pid)這將返回 powershell 的 PIDC:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe start shell:AppsFolder\Microsoft.WindowsCalculator_8wekyb3d8bbwe!App有沒有辦法通過 AppID 啟動應(yīng)用程序并仍然獲得正確的 PID?
查看完整描述

1 回答

?
慕慕森

TA貢獻(xiàn)1856條經(jīng)驗 獲得超17個贊

博士


// Make PowerShell not only launch Calculator, but also

// determine and output its PID, as described in the next section.

out, _ := 

        exec.Command(

          `powershell.exe`, 

          `-NoProfile`, 

          `-Command`, 

          `Start-Process -ErrorAction Stop calculator: ; (Get-Process Calculator | Where-Object SessionId -eq (Get-Process -ID $PID).SessionId).ID`,

        ).Output()


// Parse stdout output, which contains the PID, into an int

var pid int

fmt.Sscanf(string(out), "%d\n", &pid)

  • 原則上,您可以傳遞-PassThru給 PowerShell 的Start-Processstart) cmd,它返回一個 process-info 對象,該對象具有.Id包含已啟動進(jìn)程的 PID 的屬性,并輸出后者。

  • 不幸的是,對于特定的UWP/AppX 應(yīng)用程序,例如計算器,這不起作用,這是底層 .NET API 中存在的問題,至少在 .NET 6.0 之前 - 請參閱GitHub 問題 #10996。

您可以嘗試以下解決方法

  • 使用 啟動 AppX 應(yīng)用程序Start-Process,這會間接創(chuàng)建一個名為Calculator(Windows 10) / CalculatorApp(Windows 11) 的進(jìn)程。

    • 如果您在啟動計算器后運行,您可以自己識別此名稱(Get-Process *calc*).NameGet-Process *calc* | Select-Object Name, Path也會顯示可執(zhí)行文件路徑,但請注意,此可執(zhí)行文件應(yīng)被視為實現(xiàn)細(xì)節(jié),不能直接調(diào)用。

  • Calculator返回那個/進(jìn)程的 ID CalculatorApp。事實上,計算器只在給定的用戶會話中創(chuàng)建一個這樣的進(jìn)程,這實際上使得識別該進(jìn)程變得容易。

    • 請注意,這意味著可能會返回預(yù)先存在的計算器進(jìn)程的 PID ,但這正確的,因為通過簡單地將新計算器窗口的創(chuàng)建委托給現(xiàn)有進(jìn)程啟動的瞬態(tài)進(jìn)程。Start-Process

    • 如果您想識別新創(chuàng)建的窗口,則需要做更多的工作:您必須枚舉進(jìn)程的窗口并識別具有最高 z 順序的窗口。

PowerShell 代碼(注意:在 Windows 11 中,替換CalculatorCalculatorApp):

# Launch Calculator - which may reuse an existing instance and

# merely create a new *window* - and report the PID.

Start-Process -ErrorAction Stop calculator:

(Get-Process Calculator | Where-Object SessionId -eq (Get-Process -ID $PID).SessionId).ID

請注意,我使用 URL 方案calculator:作為啟動計算器的更簡單方法。

筆記:

  • 防止Where-Object SessionId -eq (Get-Process -ID $PID).SessionId錯誤地考慮其他用戶他們自己的會話Calculator中創(chuàng)建的潛在進(jìn)程(返回所有用戶會話中在本地計算機(jī)上運行的所有進(jìn)程)。按 過濾,即按活動用戶會話(窗口站)過濾,可防止出現(xiàn)此問題。Get-Process.SessionID

作為 PowerShell CLI調(diào)用:

powershell.exe -NoProfile -Command "Start-Process -ErrorAction Stop calculator: ; (Get-Process Calculator | Where-Object SessionId -eq (Get-Process -ID $PID).SessionId).ID"


查看完整回答
反對 回復(fù) 2023-02-14
  • 1 回答
  • 0 關(guān)注
  • 327 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號