
рдореИрдВ рддрдХрдиреАрдХреА рд╕рд╣рд╛рдпрддрд╛ рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реВрдВ, рдПрдХ рджрд┐рди рдореИрдВ рд╡рд┐рдВрдбреЛрдЬ 7 рдореЗрдВ рдмреИрдХрдЕрдк рдпрд╛ рд░рд┐рд╕реНрдЯреЛрд░ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреА рд╕рдорд╕реНрдпрд╛ рдореЗрдВ рднрд╛рдЧ рдЧрдпрд╛ред рдЬрдм рдХреЛрдИ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░ рдХрдВрдЯреНрд░реЛрд▓ рдкреИрдирд▓ рдореЗрдВ рдмреИрдХрдЕрдк рдпрд╛ рд░реАрд╕реНрдЯреЛрд░ рдЯреИрдм рдХрд╛ рдЪрдпрди рдХрд░рддрд╛ рд╣реИ, рддреЛ "рдХреЙрдиреНрдлрд┐рдЧрд░ рдмреИрдХрдЕрдк" рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдирд╛ рдмрдВрдж рдХрд░ рджреЗрддрд╛ рд╣реИред рдЯреИрдм рдХреА рдЦреЛрдЬ рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдмрд╕ рдкреНрд░реЛрдЧреНрд░рд╛рдо C: \ Windows \ System32 \ sdclt.exe рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВ
Yandex / Google рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдЦреЛрдЬрдиреЗ рд╕реЗ рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реБрдЖред рд╡реЗ рд╕рдорд╕реНрдпрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╣реБрдд рдмрд╛рдд рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдХреЛрдИ рднреА рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдирд╣реАрдВ рдЬрд╛рдирддрд╛ рдХрд┐ рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИ, рд╕рд┐рд╡рд╛рдп рдЗрд╕рдХреЗ рдХрд┐ рд╡реЗ рдЖрдкрдХреЛ рддреБрд▓рдирд╛ рдХреА
рд╕реНрдерд╛рдкрдирд╛ рд░рджреНрдж рдХрд░рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддреЗ рд╣реИрдВ
! рдпрд╛ PowerISO , рдЬреЛ рдЧрд▓рдд рддрд░реАрдХреЗ рд╕реЗ рд╢реЗрд▓ рд╕рдВрджрд░реНрдн рдореЗрдиреВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХреНрд╕рдкреНрд▓реЛрд░рд░ рдореЗрдВ рдПрдореНрдмреЗрдбрд┐рдВрдЧ рдХреЛ рд╕рдВрднрд╛рд▓рддрд╛ рд╣реИред рдореИрдВрдиреЗ рдпрд╣ рджреЗрдЦрдирд╛ рд╢реБрд░реВ рдХрд┐рдпрд╛ рдХрд┐ рдХреНрдпрд╛ рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдХреЛрдИ рд╕рдорд╛рди рдХрд╛рд░реНрдпрдХреНрд░рдо рд╣реИрдВ рдФрд░ рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдПрдХ рдЙрдкрдпреЛрдЧреА рдЙрдкрдпреЛрдЧрд┐рддрд╛ рд╕реНрдерд╛рдкрд┐рдд рдХреА рдЧрдИ рд╣реИ рдЬреЛ рдПрдХреНрд╕рдкреНрд▓реЛрд░рд░ рд╕рдВрджрд░реНрдн рдореЗрдиреВ рдХреЛ рдмрджрд▓ рджреЗрддреА рд╣реИ, рдЗрд╕рдХреА рдХреНрд╖рдорддрд╛рдУрдВ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рддреА рд╣реИред
рдЗрд╕ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреА рд╕реНрдерд╛рдкрдирд╛ рд░рджреНрдж рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЖрд░реНрдХрд╛рдЗрд╡рд┐рдВрдЧ рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛рдПрдВ рдЧрд╛рдпрдм рд╣реЛ рдЧрдИрдВред рдореИрдВрдиреЗ рддрдХрдиреАрдХреА рд╕рд╣рд╛рдпрддрд╛ рд╕реЗ рд╕рдВрдкрд░реНрдХ рдХрд┐рдпрд╛, рдЙрдиреНрд╣реЛрдВрдиреЗ рдореБрдЭреЗ рдЙрди рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рд┐рдЪ рдХрд┐рдпрд╛, рдЬреЛ рдХреБрдЫ рднреА рд╕рдордЭрджрд╛рд░реА рд╕реЗ рдирд╣реАрдВ рдХрд╣ рд╕рдХрддреЗ рдереЗ, рд╕рд┐рд╡рд╛рдп рдЗрд╕рдХреЗ рдХрд┐ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХреЛ рдмрд╣реБрдд рдкрд╣рд▓реЗ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ рд╡рд┐рдВрдбреЛрдЬ 7 рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдПрдХ рдирд┐рдЬреА рдмрд╛рддрдЪреАрдд рдореЗрдВ рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рд╢реЗрд▓ рдкреНрд░реЛрдЯреЗрдХреНрдЯ рдореЗрдиреВ рдореЗрдВ рдПрдореНрдмреЗрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП CodeGuru рд╡реЗрдмрд╕рд╛рдЗрдЯ рд╕реЗ OpenSource рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред
CtxMenu, рдХреЙрдкреАрд░рд╛рдЗрдЯ 1999, рдЫреЛрдЯреЗ рдкрд╢реБ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░
рдЗрд╕ рдХреЛрдб рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдирд┐: рд╢реБрд▓реНрдХ рд╡рд┐рддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдпрд╣ рдХреЛрдб рдЗрд╕ рдкреНрд░рдХрд╛рд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдХрд┐рд╕реА рднреА рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдЗрд╕ рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдХреЛрдб рдореЗрдВ рдХреЛрдИ рднреА рдмрдЧ рдЖрдкрдХреА рдЬрд┐рдореНрдореЗрджрд╛рд░реА рд╣реИредрд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИ?
рдЕрдЬреАрдм рддрд░рд╣ рд╕реЗ, рдкреИрд░ рдХреЛрдбрдЧреБрд░реБ рд╡реЗрдмрд╕рд╛рдЗрдЯ рд╕реЗ рдареАрдХ рд╕реЗ рдмрдврд╝рддреЗ рд╣реИрдВ, рдЬрд╣рд╛рдВ 1999 рдореЗрдВ рдХреНрд░рд┐рд╕ рд▓реЙрдЬрд╝рд┐рдВрдЧрд░
рдиреЗ рдЕрдкрдиреЗ рд▓реЗрдЦ рдХреЛ рдХреЙрдиреНрдЯреЗрдХреНрд╕реНрдЯрдореЗрдиреБ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг
рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд┐рдпрд╛ рдерд╛ , рдЬреЛ рдмрд╛рдж рдореЗрдВ рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рд╡реНрдпрд╛рдкрдХ рд░реВрдк рд╕реЗ рдлреИрд▓ рдЧрдпрд╛ред рдореБрдЭреЗ рд╕рдВрджреЗрд╣ рд╣реИ рдХрд┐ рдЙрдкрд░реЛрдХреНрдд рд╕рдорд╕реНрдпрд╛рдПрдВ рддреБрд▓рдирд╛рддреНрдордХ рд╣реИрдВ! рдФрд░ PowerISO рднреА рдЗрд╕ рдХреЛрдб рдХреЗ рдЙрдкрдпреЛрдЧ рд╕реЗ рдЬреБрдбрд╝реЗ рд╣реИрдВред
рдЪрд▓рд┐рдП ShellCtxMenu.cpp рдлрд╝рд╛рдЗрд▓, InvokeCommand рдлрд╝рдВрдХреНрд╢рди рдкрд░ рдХрд░реАрдм рд╕реЗ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВ:
STDMETHODIMP CShellExt::InvokeCommand(LPCMINVOKECOMMANDINFO lpcmi) { // // skipped // HRESULT hr = NOERROR; if (!HIWORD(lpcmi->lpVerb)) { idCmd = LOWORD(lpcmi->lpVerb); // process it switch (idCmd) { default: case 0: // operation 1 case 1: // operation 2 // // skipped // break; } // switch on command } return hr; }
рдпрд╣ рджреЗрдЦрдирд╛ рдЖрд╕рд╛рди рд╣реИ рдХрд┐ рд╕реНрд╡рд┐рдЪ рдХреЗ рдЕрдВрджрд░, рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╢рд╛рдЦрд╛ рдФрд░ рдЕрдиреНрдп рдорд╛рдорд▓реЛрдВ рдХрд╛ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдЙрд╕реА рддрд░рд╣ рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдЕрдВрдд рдореЗрдВ NOERROR рдХреЛ рд╣рдореЗрд╢рд╛ рд╡рд╛рдкрд╕ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдЧрд▓рдд рд╣реИред рдФрд░ рдХрд╣рд╛рдВ рд░рд┐рдЯрд░реНрди рдХреЛрдб E_INVALIDARG рд╣реИ - рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдпрд╣ рд╕рдВрдХреЗрдд рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рд╣рдордиреЗ idCmd рд╕рдВрд╕рд╛рдзрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИред
рдЗрд╕рдХреЛ рдХреЛрдб рдмрджрд▓реЗрдВ:
STDMETHODIMP CShellExt::InvokeCommand(LPCMINVOKECOMMANDINFO lpcmi) { // // skipped // HRESULT hr = E_INVALIDARG; if (!HIWORD(lpcmi->lpVerb)) { idCmd = LOWORD(lpcmi->lpVerb); // process it switch (idCmd) { default: goto err_exit; case 0: // operation 1 case 1: // operation 2 // // skipped // break; } // switch on command hr = NOERROR; } err_exit: return hr; }
рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, E_INVALIDARG рд▓реМрдЯрд╛рдПрдБ рдпрджрд┐ рдпрд╣ рд╣рдорд╛рд░реА рдЯреАрдо рдпрд╛ NOERROR рдирд╣реАрдВ рд╣реИ рдпрджрд┐ рд╣рдорд╛рд░реА рдФрд░ рдпрд╣ рд╕рдВрд╕рд╛рдзрд┐рдд рдХреА рдЧрдИ рдереАред рдЗрди рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рдмрд╛рдж, рдмреИрдХрдЕрдк рдпрд╛ рдкреБрдирд░реНрд╕реНрдерд╛рдкрдирд╛ рдЙрдкрдХрд░рдг рдиреЗ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рдХрд╛рдо рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛ред
рдореИрдВ рдЖрдкрдХреЛ рдпрд╛рдж рджрд┐рд▓рд╛рддрд╛ рд╣реВрдВ рдХрд┐ рд╕рдорд╛рдкреНрдд рд╣реЛ рдЪреБрдХреА CtxMenu.Dll рдлрд╝рд╛рдЗрд▓ рдХреЛ "Regsvr32.exe CtxMenu.Dll" рдХрдорд╛рдВрдб рдХреЗ рджреНрд╡рд╛рд░рд╛ рдкрдВрдЬреАрдХреГрдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдкреНрд░рд╢рд╛рд╕рдХ рдХреЗ рддрд╣рдд, рдХреЙрдиреНрдХреНрд╕реНрдЯреЗрдХреНрд╕ рд╕реЗ рдПрдХреНрд╕рдкреНрд▓реЛрд░рд░ рдХреЗ рд╡рд┐рдЦрдВрдбрди рдФрд░ рд╡рд┐рд▓реЛрдкрди рдХреЛ "regsvr32.exe / u CtxMenu.Dll" рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ / u рд╕реНрд╡рд┐рдЪ рдХреЗ рд╕рд╛рде рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдореИрдВ рдЬреЛрдбрд╝реВрдВрдЧрд╛ рдХрд┐ рд╡рд┐рдВрдбреЛрдЬ 7 рдХреЗ рдЕрдВрдЧреНрд░реЗрдЬреА рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ, рдмреИрдХрдЕрдк рдпрд╛ рдкреБрдирд░реНрд╕реНрдерд╛рдкрдирд╛ рдЙрдкрдХрд░рдг, рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдмреИрдХрдЕрдк рдЖрдЗрдЯрдо, рдХреНрд░рдорд╢рдГ рдмреИрдХрдЕрдк рдФрд░ рдкреБрдирд░реНрд╕реНрдерд╛рдкрдирд╛ рдФрд░ рд╕реЗрдЯ рдЕрдк рдмреИрдХрдЕрдк рдХрд╣рд▓рд╛рддреЗ рд╣реИрдВред
рдЖрдкрдХрд╛ рдзреНрдпрд╛рди рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред