Display number

Sracok. Egyszeruen nem talalok olyan freeware CLIs (vagy legroszabb esetben akar GUIs) progit, amely ki tudja irni a Windows "Display Settings/Identity" alatt levo szamozast. Azaz ha van tobb monitorom, a szamokat monitorokhoz rendeli, a legjobb az lenne, ha a \.\DISPLAYx  megfelelesekhez.

A szokasos toolok (multimonitortool, nircmd, stb.) sajna nem csinaljak ezt, a szamozas ugyanis random lehet (fugg a bekaopcsolas sorrendtol, stb.), foleg akkor, ha USBs vagy virtualis kijelzok vannak a rendszerben. 

Allitolag C# ban lehet forditani egy cuccost, ami a megfelelo fuggvenyt kezeli, de ebben nem vagyok jo.

Hozzászólások

ez is tipikusan olyan feladat, amiben az AI segitsegedre lehetne

gondolod, hogy nem kerdeztem meg...? amit olvasol, azt irta  (bar ez az "ez is" ma mar mindenre ramondhato, igy nem mondtal semmit)

tool elvileg nem letezik, ami freeware, foleg nem CLIs...(alitolag a kommerszial Displayfusion csinal valamit, de az nekem nem opcio, meg eleve nem CLI)

Szerintem azért nem találsz ilyet mert ezt leprogramozni pár sor.

 

#include <iostream>
#include <windows.h>
#include <WinUser.h>
#include <Windowsx.h>

int main()
{
    MONITORINFOEX target;
    ZeroMemory(&target, sizeof(MONITORINFOEX));
    target.cbSize = sizeof(MONITORINFOEX);

    HMONITOR hMon = MonitorFromWindow(GetDesktopWindow(), MONITOR_DEFAULTTONEAREST);
    GetMonitorInfo(hMon, &target);

    std::wcout << target.szDevice << "\n";
}

Ha elolvasod a commentemet, inkabb a compile resszel van gondom, nem vagyok felkeszulve C forditasra W alatt, emiatt lustasagbol gondoltam, van mar ra tool :D

Illetve a \.\DISPLAYx cuccos hozzarendeles lenne itt a fo kerdes, nemcsak a kiiratas...

Ez teszteltem, sajna ezzel sokat nem erek. Nekem az a szam kell, amit a Windows ir ki az Identity alatt a monitorra, sajna ez nem az.

 

C:\Users\pista\Downloads>monitor.exe
\\.\DISPLAY2

C:\Users\laci\Downloads>

Ebben az esetben (monitoron) a 3-as szam van.

Nekem ppxty ezekt ajanlotta:

powershell:

> get-wmiobject -class win32_desktopmonitor

> Get-CimInstance -classname win32_pnpentity | where-object { $_.service -eq "monitor"} | select-object deviceid, name, pnpdeviceid

ez nem müködött:

>Get-CimInstance -Namespace rootwmi -ClassName WmiMonitorID | ForEach-Object {     $name = [System.Text.Encoding]::ASCII.GetString($_.UserFriendlyName).Trim([char]0)     $serial = [System.Text.Encoding]::ASCII.GetString($_.SerialNumberID).Trim([char]0)     Write-Host "Name: $name, Serial: $serial" }

Meg tudod ezt oldani AutoHotKey-vel, ami tud magától .exe-re is fordítani:

#Requires AutoHotkey v2
Primary := MonitorGetPrimary()
StdOut := FileOpen("*", "w", "UTF-8")
StdOut.Write("%Primary%")
StdOut.Close()

Egy trükkre még szükség lehet, ez nem írja ki a kimenetet Parancssorban, hanem bele kell pipe-olni egy másik parancsba, pl. echo, leforditott.exe | echo

Meg annyi, hogy ez Powershellből indítva nem biztos, hogy működik.

Linuxon sokkal elegánsabb: xrandr --listmonitors

Windows 95/98: 32 bit extension and a graphical shell for a 16 bit patch to an 8 bit operating system originally coded for a 4 bit microprocessor, written by a 2 bit company that can't stand 1 bit of competition.”

meg valaki?  Eddig netto nulla az eredmeny.

Mármint hogy nulla? Nem fordulnak le a megadott kódok, vagy lefordulnak, de nem a jó számokat jelzik?

Windows 95/98: 32 bit extension and a graphical shell for a 16 bit patch to an 8 bit operating system originally coded for a 4 bit microprocessor, written by a 2 bit company that can't stand 1 bit of competition.”