Select the product you need help with
INFORMACE: Volání rutiny CRT výstup z aplikace GUIID článku: 105305 - Produkty, které se vztahují k tomuto článku. SouhrnPoužití rutiny výstup C Runtime, jako například printf() z GUI aplikace je nutné vytvořit konzolu. Rozhraní Win32 application programming interface (API) AllocConsole() vytvoří konzoly. Rutiny setvbuf() CRT odebere ukládání do vyrovnávací paměti, že výstup je okamžitě viditelná. Tato metoda funguje, pokud je aplikace GUI spustit z příkazového řádku nebo z programu Správce souborů. Tato metoda však nefunguje, pokud je spuštěna aplikace Správce programů nebo prostřednictvím příkazu "start". Následující kód ukazuje, jak tento problém vyřešit: Poznámka: Tento kód neodstraní potíže s úchyty 0, 1 a 2. Ve skutečnosti kvůli jiných komplikacích není možné opravit to a proto je nutné použít datový proud I/O namísto I/O nižší úrovně. Další informacePři spuštění aplikace GUI s "start"příkaz tři standardní OS zpracovává STD_INPUT_HANDLE, STD_OUTPUT_HANDLE a STD_ERROR_HANDLE jsou všechny"vynulovanými mimo" podle rutiny inicializace konzoly. Tyto tři popisovače jsou nahrazeny platné hodnoty při GUI aplikace volá AllocConsole(). Proto po to provést volání GetStdHandle() bude vždy vrátit platný popisovač hodnoty. Problém je, že CRT již dokončil inicializaci před aplikace získá pravděpodobnost volání AllocConsole(); tři nízké I/O úchytů 0, 1 a 2 byly již nastaveny použít původní vynulovanými mimo úchyty OS tak všechny I/O CRT odeslána neplatná úchyty OS a CRT výstup nezobrazí v konzole. Použijte řešení eliminovat potíže popsané výše. V případě typu spuštění GUI aplikace z příkazového řádku bez příkazu "start" standardní úchyty OS jsou NOT správně vynulovanými mimo ale nesprávně zděděné z cmd.exe. Při inicializuje aplikace CRT tři nízké I/O úchytů 0, 1 a 2 inicializován použít tři úchyt čísla, která aplikace zdědí cmd.exe. Když aplikace volá AllocConsole(), pokus o inicializaci rutiny konzoly nahradit inicializace konzoly považuje být neplatné hodnoty standardní popisovač OS platný popisovač hodnotami z nové konzoly. Podle coincidence protože inicializace rutiny konzoly mají tendenci neuvádějte stejné tři hodnoty standardní úchyty OS initilization konzoly nahradí standardní popisovač hodnoty OS stejné hodnoty, které byly před--ty zděděné z cmd.exe k dispozici. Proto CRT I/O v tomto případě funguje. Je důležité si uvědomit, že schopnost používat rutiny CRT z aplikace GUI spustit z příkazového řádku nebyl záměrné tak to nemusí fungovat v budoucích verzích Windows NT nebo Windows. Budoucí verze nejen pro aplikace spuštěna v příkazovém řádku s "zahájení < název aplikace >", ale také pro spuštění na příkazovém řádku příkazu "název aplikace" aplikace bude pravděpodobně nutné řešení. VlastnostiID článku: 105305 - Poslední aktualizace: 21. listopadu 2006 - Revize: 4.2 Informace v tomto článku jsou určeny pro produkt:
Strojově přeložený článek Důležité: Tento článek byl přeložen pomocí software společnosti Microsoft na strojový překlad, ne profesionálním překladatelem. Společnost Microsoft nabízí jak články přeložené překladatelem, tak články přeložené pomocí software na strojový překlad, takže všechny články ve Znalostní databázi (Knowledge Base) jsou dostupné v češtině. Překlad pomocí software na strojový překlad ale není bohužel vždy dokonalý. Obsahuje chyby ve skloňování slov, skladbě vět, nebo gramatice, podobně jako když cizinci dělají chyby při mluvení v češtině. Společnost Microsoft není právně zodpovědná za nepřesnosti, chyby nebo škody vzniklé chybami v překladu, nebo při použití nepřesně přeložených instrukcí v článku zákazníkem. Společnost Microsoft aktualizuje software na strojový překlad, aby byl počet chyb omezen na minimum. Projděte si také anglickou verzi článku:105305
(http://support.microsoft.com/kb/105305/en-us/
)
| Překlady článku
|




Zpět nahoru








