Compare commits

...

1096 Commits

Author SHA1 Message Date
Colin Finck
08db8fdd1f [FOSDEM 2015]
- Import the <msg> code again. reactos.exe doesn't show a "Finish" button as promised, but instead presents you with an unfinished GUI installer.
- Also import the messages. The French translation is copied from reactos.exe, so it isn't as exact as the English or German ones, but it carries the meaning.

svn path=/branches/ReactOS-0.3.17-FOSDEM2015/; revision=66121
2015-01-30 03:19:25 +00:00
Hermès Bélusca-Maïto
d3c5de2335 [BOOTDATA]: Simplify hybridcd boot menu.
svn path=/branches/ReactOS-0.3.17-FOSDEM2015/; revision=66120
2015-01-30 01:12:55 +00:00
Hermès Bélusca-Maïto
2904a2ade0 Sync with trunk r66118.
svn path=/branches/ReactOS-0.3.17-FOSDEM2015/; revision=66119
2015-01-30 00:47:13 +00:00
Hermès Bélusca-Maïto
16c0d115da [FOSDEM2015-WELCOME]
- Fix compilation
- Fix lang files (should be UTF8 w/o BOM)
- Translate into French
- Do NOT forget that RosBE is now quite incompatible with Windows 2000 !!!

svn path=/branches/ReactOS-0.3.17-FOSDEM2015/; revision=66117
2015-01-29 23:31:50 +00:00
Colin Finck
fd797a7054 [WELCOME]
- Apply parts of the welcome.c part from r62439 to this branch. Compared to CLT2014, remove the code for handling <msg>, we don't need it anymore.
  This change should go into Trunk if it works well :)
- Create a new French resource file out of the English one to let Hermès translate it to French.

svn path=/branches/ReactOS-0.3.17-FOSDEM2015/; revision=66116
2015-01-29 22:30:04 +00:00
Colin Finck
d6b2d32c34 [FOSDEM 2015]
Translate the welcome.exe into English and customize all menu entries for the files on the FOSDEM 2015 CD

svn path=/branches/ReactOS-0.3.17-FOSDEM2015/; revision=66115
2015-01-29 22:10:30 +00:00
Hermès Bélusca-Maïto
f14a0aa80f [FOSDEM2015]: Flatten a bit the hybridcd tree otherwise some problems appear for the livecd (in other words, some parts of the OS do not really support having ROS installed eg. in C:\some_custom_dir\reactos instead of C:\reactos).
svn path=/branches/ReactOS-0.3.17-FOSDEM2015/; revision=66114
2015-01-29 21:36:54 +00:00
Hermès Bélusca-Maïto
b8ff7aff51 Sync with trunk r66111.
svn path=/branches/ReactOS-0.3.17-FOSDEM2015/; revision=66112
2015-01-29 01:08:58 +00:00
Hermès Bélusca-Maïto
ca05c5f9f2 [FOSDEM2015]
- Update readme.txt with CD contents (à la CLT).
- Add wallpapers (and one based on artwork by Henry Tang, that was already used in the official 0.3.17 release) and activate the fosdem one.
- Fix the autorun path (should be done globally in trunk later on, i.e. after FOSDEM2015 is over).
- Add user-friendliness to the boot menu.

svn path=/branches/ReactOS-0.3.17-FOSDEM2015/; revision=66111
2015-01-29 01:01:58 +00:00
Colin Finck
347aa122c5 [EXPLORER]
Apply the changes of r66095 for the 0.3.17-FOSDEM2015 release

svn path=/branches/ReactOS-0.3.17-FOSDEM2015/; revision=66096
2015-01-26 23:03:07 +00:00
Hermès Bélusca-Maïto
9bfbf0d4a0 Sync to trunk revision 66092.
svn path=/branches/ReactOS-0.3.17-FOSDEM2015/; revision=66093
2015-01-26 21:41:11 +00:00
Hermès Bélusca-Maïto
7c751fe5dc [REACTOS]
- CORE-9069 #comment Add a "NOT_IN_HYBRIDCD" flag (I don't have atm. a better name...) to specify files that must not be present in the bootcd/... or livecd/... directories of the hybridcd. The flag name is confusing because for few files (eg. readme.txt) it is used together with the target "all hybridcd". In this case, that means: add readme.txt file to the bootcd and livecd root directories, add it to the hybridcd root directory but NOT in the bootcd/ and livecd/ directories of the hybridcd... Everybody follows?
- Remove the bootsector files for the livecd (only keep isoboot though :) ) since they are not needed there (they are only needed for the bootcd).

svn path=/trunk/; revision=66092
2015-01-26 21:19:21 +00:00
Timo Kreuzer
e7d852bc11 [FREELDR]
Fix/improve range check. 
CORE-8995 #resolve 
CORE-8997 #resolve

svn path=/trunk/; revision=66091
2015-01-26 21:11:58 +00:00
Hermès Bélusca-Maïto
bc632bd42c Update versioning for FOSDEM.
svn path=/branches/ReactOS-0.3.17-FOSDEM2015/; revision=66090
2015-01-26 19:13:46 +00:00
James Tabor
890e37805d - Turn off trace.
svn path=/trunk/; revision=66089
2015-01-26 15:01:52 +00:00
James Tabor
8d5b642a5f [Win32ss|NtUser]
- Support process start up user show window parameter.

svn path=/trunk/; revision=66088
2015-01-26 15:00:24 +00:00
Timo Kreuzer
63ae430acc [FREELDR]
Make the DiskReadBuffer location and size dynamic. Should fix a number of issues with non-standard BIOSes. Many thanks to jeditobe for his help with testing/debugging of this issue.
CORE-8899 #resolve
CORE-9031 #resolve

svn path=/trunk/; revision=66087
2015-01-25 23:24:27 +00:00
Eric Kohl
273593de7e [CACLS]
Parsing arguments. Patch by Katayama Hirofumi.
#CORE-6799 #resolve

svn path=/trunk/; revision=66086
2015-01-25 19:22:49 +00:00
James Tabor
c094b4cd6e [Win32ss]
- Fix window from point so it handles disabled windows correctly.
- Cleanup processing mouse routine.
- See CORE-7447.

svn path=/trunk/; revision=66085
2015-01-25 15:57:22 +00:00
Thomas Faber
a46eeba526 [WIN32K:NTUSER]
- Do not use pwndChild uninitialized in co_WinPosSearchChildren

svn path=/trunk/; revision=66084
2015-01-25 15:26:13 +00:00
Hermès Bélusca-Maïto
66cc347765 [CDMAKE]
- Disable unused dir_hash_next_dir function and corresponding target_dir_traversal structure definition.
- Be really sure de->head and de->child are initialized at NULL.
- Remove extra parentheses and unused variable.

svn path=/trunk/; revision=66083
2015-01-24 00:15:08 +00:00
Hermès Bélusca-Maïto
8ee4a20157 [DOSMBR]
- tab --> 4-spaces.
- add some Uppercases at the beginning of sentences...

svn path=/trunk/; revision=66082
2015-01-23 22:21:09 +00:00
Hermès Bélusca-Maïto
a40388d89c [HYBRIDCD]: It appears we need to manually create the default_user/desktop folder to not fail (as we do for the real livecd).
svn path=/trunk/; revision=66081
2015-01-23 22:19:33 +00:00
Hermès Bélusca-Maïto
ea6251ad97 [CDMAKE]
- llmosrt.c --> llmsort.c as it should be named.
- Remove useless free(...) calls and a temp variable.

svn path=/trunk/; revision=66080
2015-01-23 21:38:15 +00:00
James Tabor
44613092ba [Win32ss]
- Plugging in the real fix for CORE-6129!
- Works like it should, but CMD properties window gets active when it should not. See CORE-6651.

svn path=/trunk/; revision=66078
2015-01-22 23:31:22 +00:00
Hermès Bélusca-Maïto
d829df8c49 [WALLPAPER]
Remove now unneeded RBuild file.

svn path=/trunk/; revision=66077
2015-01-22 22:29:48 +00:00
Amine Khaldi
57febf6ccf [DBGHELP] Restrict the Clang workaround in r64203. Fixes CORE-9084. Many thanks to David Quintana and The Arty for their help. Dedicated to Jim ;)
svn path=/trunk/; revision=66076
2015-01-22 21:13:57 +00:00
Timo Kreuzer
1adc737644 [WIN32K]
Fix broken ASSERTs
CORE-8938 #resolve

svn path=/trunk/; revision=66075
2015-01-22 21:03:46 +00:00
James Tabor
6362e14265 [NtUser]
- Finally fix ATI tests. Break through while testing User32:win.c:test_window_from_point. See CORE-6551.
- If any trouble, please create a new Jira report.

svn path=/trunk/; revision=66074
2015-01-21 23:15:28 +00:00
Hermès Bélusca-Maïto
571af394cd [REACTOS] HybridCD: Move the livecd.iso file into the livecd directory.
svn path=/trunk/; revision=66073
2015-01-21 22:24:47 +00:00
Amine Khaldi
f30e744a14 [TCPIP_DRVTEST] Temporarily fix build.
svn path=/trunk/; revision=66072
2015-01-21 18:38:26 +00:00
Jérôme Gardou
6113b2f585 [TCPIP_DRVTEST]
- Actually print the physical address of the ARP table entry.

svn path=/trunk/; revision=66071
2015-01-21 16:01:02 +00:00
Jérôme Gardou
1f7304870c [TCPIP_DRVTEST]
- Add quite a lot of tests for IOCTL_TCP_QUERY_INFORMATION_EX
This IOCTL is quite important because that's how iphlpapi gets data from it.
Also, this can be used as a viewer for quite a lot SNMP info as described here: http://www.oidview.com/mibs/0/RFC1213-MIB.html

svn path=/trunk/; revision=66070
2015-01-21 15:55:00 +00:00
Eric Kohl
acf84c8854 [NETCFGX][SYSSETUP]
- Move TCP/IP driver setup code from netcfgx to syssetup.
- Implement SetupStartService().
This installs the TCPIP driver even if no network adapter is available.
CORE-8420 #resolve

svn path=/trunk/; revision=66069
2015-01-20 20:57:58 +00:00
Timo Kreuzer
caae20ea25 [SPEC2DEF]
Fix generation of ARM assembly stubs with C++ name mangling. Patch by Yuntian Zhang.
CORE-8700 #resolve #comment Committed, thanks.

svn path=/trunk/; revision=66068
2015-01-20 18:33:33 +00:00
Amine Khaldi
b978d73b11 [NOTEPAD]
* Replace the page setup dialog with a modified copy from comdlg32. Use PageSetupDlg and a hook function to bring the dialog on screen instead of DialogBox and a dialog procedure. With this, PageSetupDlg can do most of the work (init the controls for example).
* Save the returned hDevMode and hDevNames to two global variables, so we can use them in later calls to page setup and print.
* Include header, footer and page margins when saving/loading settings.
* Remove printer setup from the file menu (and related code/resources) since it isn't needed anymore.
* Brought to you by Ricardo Hanke.
CORE-9040

svn path=/trunk/; revision=66067
2015-01-20 12:12:40 +00:00
Timo Kreuzer
7638b204cd [WIN32K]
Remove broken ASSERT
CORE-9033 #resolve
See issue #9033 for more details.

svn path=/trunk/; revision=66066
2015-01-19 23:24:07 +00:00
Eric Kohl
e269d75d98 [DEVMGR]
Enlarge the buffer by one WCHAR if REG_SZ values are being retrieved. This fixes strange enumerator properties.

svn path=/trunk/; revision=66065
2015-01-19 21:10:04 +00:00
Amine Khaldi
af6fb5892b [EVENTVWR] Fix the template of event details string copied in the memory clipboard. By Ștefan Fulea. CORE-8914
svn path=/trunk/; revision=66064
2015-01-19 13:00:03 +00:00
Amine Khaldi
482f3cba63 [NOTEPAD] Don't hardcode the error message that's displayed if StartPage fails. By Ricardo Hanke. Translators, you're up! CORE-9045
svn path=/trunk/; revision=66063
2015-01-19 12:49:51 +00:00
Amine Khaldi
997daf446e [SYSDM] Fix clicking on open User Accounts while using sysdm.cpl. By Jared. CORE-9047
svn path=/trunk/; revision=66062
2015-01-19 12:44:21 +00:00
Amine Khaldi
96d28bebdf [NOTEPAD] Allow the user to print only the current selection. Brought to you by Ricardo Hanke. CORE-9052
svn path=/trunk/; revision=66061
2015-01-19 12:40:34 +00:00
Amine Khaldi
484fabea89 [CRT] Fix handling of TLS data. Found by the syzygy folks. CORE-9071
svn path=/trunk/; revision=66060
2015-01-19 12:29:18 +00:00
Amine Khaldi
efcad39e0e [RAPPS] Turkish translation update by Erdem Ersoy. CORE-8874
svn path=/trunk/; revision=66059
2015-01-19 12:16:17 +00:00
Amine Khaldi
549a3d8b04 [RTL] Apply Wine commit cffd86f by Qian Hong: Make RtlAddVectoredExceptionHandler hotpatchable.
svn path=/trunk/; revision=66058
2015-01-19 12:06:17 +00:00
Amine Khaldi
3b7809f832 [TRANSLATIONS] Turkish translation update by Erdem Ersoy. CORE-7861
svn path=/trunk/; revision=66057
2015-01-19 12:05:42 +00:00
James Tabor
53c063af78 [User32]
- When sending set cursor with an error hit, it should locate a pop up window if any are visible. See CORE-6651.
- Need to fix NtUser co_IntProcessMouseMessage and co_WinPosWindowFromPoint properly. While testing, added hack to help make this work.
- REAL fix for CORE-6129.

svn path=/trunk/; revision=66056
2015-01-18 22:55:03 +00:00
James Tabor
2439d0030f [NtUser]
- Fix return to previously active window. See CORE-106.

svn path=/trunk/; revision=66055
2015-01-18 22:39:56 +00:00
Hermès Bélusca-Maïto
2bf5258b98 [HYBRIDCD]: Require dependency from bootcd too, so that the files that are needed for building the bootcd (the reactos.cab, .inf etc) are also built so that they can be incorporated into the hybridcd.
CORE-9069

svn path=/trunk/; revision=66054
2015-01-18 19:21:42 +00:00
Amine Khaldi
9c8e45896b [KERNEL32] Apply Wine commit caa0829 by Qian Hong: Make SetUnhandledExceptionFilter hotpatchable.
svn path=/trunk/; revision=66053
2015-01-18 16:49:17 +00:00
Hermès Bélusca-Maïto
40e2cf8ff0 [REACTOS]
Introduce a way to add arbitrary files into the hybrid cd under a "extras" directory:
- put your files into /trunk/reactos/modules/hybridcd_extras
- do a cmake . && ninja hybridcd
- voilà.
Notice that you need to redo a configure (via "cmake .") in order to update the hybridcd list of files that get included into the hybridcd...

CORE-9069

svn path=/trunk/; revision=66052
2015-01-18 16:28:18 +00:00
Hermès Bélusca-Maïto
bb43ef9710 [REACTOS]
Add basic Hybrid-CD generation to our build system.

Few changes were needed, especially in how we deal with the CD target "all": it's only for all the CD targets *BUT* the hybridcd. For the hybridcd you need to always specify the target manually (like in "... FOR all hybridcd" or "... FOR bootcd hybridcd" for example).

Since at the moment we cannot have the bootcd in RAMDISK, and I want to be able to either have the hybridcd booting livecd from within the CD (i.e. read/writes from the CD) or in RAMDISK, I need to also add the files that are going to be copied into the bootcd or livecd into the hybridcd.

CORE-9069 #resolve

svn path=/trunk/; revision=66051
2015-01-18 13:55:23 +00:00
Hermès Bélusca-Maïto
feb9cd80e4 [CDMAKE]: Remove potential trailing dir-separator characters at the end of the directory, in case e.g. we build up something like: "bootcd\\somefile.ext" in the boot/livecd.lst files (--> I want a directory "bootcd" and a file "somefile.ext", instead of the directory "bootcd\", otherwise the ISO becomes broken. Notice that when the path is "bootcd\somefile.ext the existing code worked ok. That's why I want to strip the remaining backslashes).
svn path=/trunk/; revision=66050
2015-01-18 13:11:35 +00:00
Hermès Bélusca-Maïto
147616c9fc [CDMAKE]: Whitespace and tabs fixes only. Next time you open your editor for coding ROS...: PLEASE, OH PLEASE!!! USE: 4-space indentation (NO TABS!!) and NO K&R coding style!!!!! (we *already* have a fixed code style in ROS).
svn path=/trunk/; revision=66049
2015-01-18 13:04:43 +00:00
Hervé Poussineau
67619ff9c8 [FREELDR] PXE: fix backward seeking (broken by r66036)
svn path=/trunk/; revision=66048
2015-01-17 22:48:29 +00:00
Hervé Poussineau
9dd2476ee1 [FREELDR] Limit disk buffer size to 0xC000 bytes, like before r65905
svn path=/trunk/; revision=66047
2015-01-17 22:48:21 +00:00
David Quintana
d7b7c58372 [RSHELL]
* Fix a long-lived signed/unsigned mismatch that may or may not have caused a few issues when hot-tracking the menubar.

svn path=/trunk/; revision=66046
2015-01-17 12:59:57 +00:00
Eric Kohl
58eee973cb [NTOSKRNL]
SepDuplicateToken: Do not allocate a new ModifiedId for the duplicated token. Use the ModifiedId of the source token instead. This fixes the DuplicateTokenEx test.

svn path=/trunk/; revision=66045
2015-01-17 11:53:40 +00:00
James Tabor
17b607a05e [User32]
- Alt-Tab Use windows logo icon as default. Patch from CORE-7864 #resolve

svn path=/trunk/; revision=66044
2015-01-17 00:31:19 +00:00
Hermès Bélusca-Maïto
3163c145e4 [CMAKE]: Tab2Space.
svn path=/trunk/; revision=66043
2015-01-16 22:42:08 +00:00
David Quintana
2ce78c4f63 [EXPLORER]
* Fix a HWND leak (and potential disaster that never happened) I noticed while investigating CORE-9008

svn path=/trunk/; revision=66042
2015-01-15 23:23:57 +00:00
David Quintana
5eee49bbea [EXPLORER]
* Addendum to r66040: Fix the return types and remove unused parameters.

svn path=/trunk/; revision=66041
2015-01-15 17:58:16 +00:00
David Quintana
ae7cd5ec73 [EXPLORER]
* Fix the notify window not resizing itself when the number of icons changes.
* Add error prints when AlignControls fails and exits early.
* Rename the Shell_NotifyIcon handler methods to something more appropriate.
CORE-9061 #resolve

svn path=/trunk/; revision=66040
2015-01-15 17:43:03 +00:00
Aleksandar Andrejevic
3e4d9f61d6 [NTVDM]
Implement INT 21h, AX = 38h (Get/Set Country-dependent Information).
Patch by Pierre Schweitzer. Thanks!


svn path=/trunk/; revision=66039
2015-01-14 22:22:05 +00:00
Daniel Reimer
9186a358da [RAPPS]
Improve the ReactOS Aplications Manager download dialog by Ismael Ferreras Morezuelas aka swyter
CORE-9056 #resolve #comment Committed, thx for help ^^

svn path=/trunk/; revision=66038
2015-01-14 21:56:27 +00:00
Hervé Poussineau
e7888466bb [NTOS:EX] Implement NtSystemDebugControl
svn path=/trunk/; revision=66037
2015-01-14 20:48:06 +00:00
Hermès Bélusca-Maïto
c788f45783 [FREELDR]: Addendum to PXE r66034: don't read after Path buffer validity.
svn path=/trunk/; revision=66036
2015-01-13 23:19:21 +00:00
Hervé Poussineau
f5ab68a2c6 [FREELDR] PXE: support backward seeking
svn path=/trunk/; revision=66035
2015-01-13 20:08:23 +00:00
Hervé Poussineau
cf89d4fdea [FREELDR] PXE: always use slashes for subdirectories and use lower casing
svn path=/trunk/; revision=66034
2015-01-13 20:08:18 +00:00
Hervé Poussineau
d08d31ad43 [FREELDR] Support failing to load some boot drivers
In that case, simply skip it and try the next one.

svn path=/trunk/; revision=66033
2015-01-13 20:08:14 +00:00
James Tabor
924eb19e72 [Win32ss]
- Remove hack to work around issue CORE-9039.
- Bypass two more DDE message calls from callback. Remove unneeded code.


svn path=/trunk/; revision=66032
2015-01-12 22:50:12 +00:00
James Tabor
5598f29e06 [NtOSKrnl]
- Fix status return from user mode callback. See CORE-9039.

svn path=/trunk/; revision=66031
2015-01-12 22:44:59 +00:00
David Quintana
ad29cd12e8 [RSHELL]
* Overhaul the Popup method's position calculation. It now takes into account proper alignment preferences and exclusion rectangles in order to position menu popups better.
* Fix a small compatibility issue with windows shell objects.
* Use the item rectangle for the exclusion, so that the popup code can properly calculate how to flip the menu position if it doesn't fit downwards.

[EXPLORER]
* Fix the flags sent to Popup when showing the start menu. We have flags that say exactly what we want, and MPPF_ALIGN_LEFT/RIGHT were introduced with NT6 anyhow.
CORE-9004 #resolve #comment Should be fixed with trunk r66030.

svn path=/trunk/; revision=66030
2015-01-12 18:03:39 +00:00
Hervé Poussineau
12d6b50f62 [cdmake] Set correct dates for directory entries
Set directory creation date to creation date of its parent, and fix root directory creation date.

This fixes a off-by-one month if ISO was created between February and December,
and invalid dates if ISO was created in January.

svn path=/trunk/; revision=66029
2015-01-11 20:43:41 +00:00
Eric Kohl
91c663f1f3 [NETSHELL]
Change resource strings to plural form 'Network Connections'.
CORE-9010 #resolve

svn path=/trunk/; revision=66028
2015-01-11 15:12:34 +00:00
Eric Kohl
6d11175bf0 [NETSHELL]
Fix coding syle and indentation. No code changes!

svn path=/trunk/; revision=66027
2015-01-11 14:58:55 +00:00
Daniel Reimer
4cc63e832b [RAPPS]
Database Update. This fixes the now dead LibreOffice link, too.
I completely skipped MirandaIM because they suck by deciding to do the same shit, Filezilla did. SF Malware "optimized" installer!

svn path=/trunk/; revision=66026
2015-01-11 14:38:26 +00:00
Daniel Reimer
b89c722854 [RAPPS]
Tidy up FF links in RAPPS. FF2 is DEAD! Instead we have now FF 3.6, 28 and newest.

svn path=/trunk/; revision=66025
2015-01-11 13:49:26 +00:00
Hermès Bélusca-Maïto
abbf37a507 [FREELDR]: Revert r66022. This wasn't our fault but VBox. See CORE-9046 for more details and proposed solution.
CORE-9046 #resolve #comment r66022 reverted.

svn path=/trunk/; revision=66024
2015-01-10 22:02:11 +00:00
Sylvain Petreolle
740ddee885 [LDR]
Relocating is NOT an eror.

svn path=/trunk/; revision=66023
2015-01-10 17:22:02 +00:00
Hermès Bélusca-Maïto
6117764150 [FREELDR]: Commit a temporary "hackfix" for (Pc)GetTime: on VBox when booting with PXE, for some mysterious reason, Int386(0x1A) call with AH = 0x02 (Get CMOS Time) *never ever* returns!! (however without PXE everything works). So... is it some kind of stack overflow or whatever that makes the Int386 function stack messy? Or something else? So in the meantime we use direct CMOS port reads. Timo, Hervé (and others), can you please review? And in particular why does it happen only with PXE?
svn path=/trunk/; revision=66022
2015-01-10 00:21:33 +00:00
Hermès Bélusca-Maïto
35b0d2e7ed [NTOS]: Bring into evidence an existing hack in PnPMgr, in the hope it'll be fixed and not remain here again for years...
svn path=/trunk/; revision=66021
2015-01-09 19:58:19 +00:00
Hermès Bélusca-Maïto
79f472a422 [RAMDISK]
- Fix DeviceRelations allocation bug
- Code style: Use sizeof(UNICODE_NULL) where needed; use sizeof(*ptr) for size of type pointed by ptr, when allocating space for ptr.

svn path=/trunk/; revision=66020
2015-01-09 18:26:17 +00:00
David Quintana
64f6189e30 [EXPLORER]
* Allow the result of the notify requests to return back to the caller. Fixes regressed shell32:systray winetests.
CORE-8840 #resolve #comment Should be properly fixed in r66019.

svn path=/trunk/; revision=66019
2015-01-09 17:24:43 +00:00
Amine Khaldi
8f3b11bfe3 [RAMDISK] Fix some comment typos. Convert comments to C style. No code changes.
svn path=/trunk/; revision=66018
2015-01-09 16:57:24 +00:00
David Quintana
1cab840681 Revert files that shouldn't have been included. I blame an ongoing headache for it.
svn path=/trunk/; revision=66017
2015-01-09 16:32:53 +00:00
David Quintana
a1fe1d888b [STOBJECT]
* Disable compiling the resource dialog for ro-RO also.

svn path=/trunk/; revision=66016
2015-01-09 16:29:46 +00:00
David Quintana
2f16a3b6da [STOBJECT]
* Fix resource strings so they compile correctly.
* Make use of the resource strings for the tooltip.
* Implement a context menu for the volume icon, using resource strings.
NOTE: I have a strange issue where the cursor disappears while the popup is open. No idea if it's my fault or win32k.

svn path=/trunk/; revision=66015
2015-01-09 16:25:49 +00:00
Hermès Bélusca-Maïto
7dbd809ef0 [ramdisk]: improve again the dprints.
svn path=/trunk/; revision=66014
2015-01-09 14:17:39 +00:00
Hermès Bélusca-Maïto
f3dfb65738 [RAMDISK]
- Whitespace fixes,
- Add braces for long "case blah: ..." code blocks,
- Add more informational messages when a feature is unimplemented (some control codes and cases happening when using ramdisk with bootcd).

svn path=/trunk/; revision=66013
2015-01-09 14:09:34 +00:00
Hermès Bélusca-Maïto
057211e26a [INSTALL_FREELDR]
Instead of keeping binary C arrays for FAT bootsectors (that by the way were completely out of date and were broken) in header files, just generate them out of our ASM-compiled bootsectors, with bin2c (as we do for PCI data for the HAL) and use them instead! So now we can use installfreeldr.exe to install e.g. a correct bootsector on a USB key that will work for loading freeldr! (and thus get rid of the Syslinux hack I presented in my video).

svn path=/trunk/; revision=66012
2015-01-09 00:12:51 +00:00
James Tabor
87a268ef23 [Win32ss]
- Fix remaining DDE issues, re-sync DDE code from wine. Add QOS startup. Moved error debug prints to traces. Over all improvement with test results.

svn path=/trunk/; revision=66011
2015-01-08 22:57:09 +00:00
Hermès Bélusca-Maïto
9a959644b3 [NTGDI]: #if'ed 0 unused pdcattr variable. Associated code with it went away in revision 65912. Timo, was it on purpose? Because in other NTGDI functions (in the same file) this code remained... (I'm talking about the if (pdcattr->ulDirty_ & (DIRTY_FILL | DC_BRUSH_DIRTY)) { DC_vUpdateFillBrush(dc); } things).
svn path=/trunk/; revision=66010
2015-01-08 20:35:51 +00:00
Pierre Schweitzer
a394c6bff6 [NTFS]
- Move directory enumeration into its own routine to prevent code duplication.
- Also, only take care of sub-node at the end of the enumeration. It doesn't make sense before.
- Supporting sub-nodes is still to be done.

svn path=/trunk/; revision=66009
2015-01-08 20:30:10 +00:00
Pierre Schweitzer
3feaedc7c5 [NTFS]
Also return MFT index in case of FileDirectoryInformation query

svn path=/trunk/; revision=66008
2015-01-08 20:29:04 +00:00
Pierre Schweitzer
c60b5e1383 [NTFS]
Also retrieve $STANDARD_INFORMATION attribute on directory enumeration to get the right file attributes.
This fixes improper display in cmd & in explorer due to missing file attributes flags

svn path=/trunk/; revision=66007
2015-01-08 20:28:25 +00:00
Amine Khaldi
5b57ee5686 [SHELL32_WINETEST] Enable test_dde() and test_dde_default_app(). CORE-6559
svn path=/trunk/; revision=66006
2015-01-08 16:42:35 +00:00
Amine Khaldi
383b76a99b [NOTEPAD] Fix some comment typos. Tabs => Spaces. Apply consistent formatting. No code changes.
svn path=/trunk/; revision=66005
2015-01-08 13:20:02 +00:00
Amine Khaldi
04d328abd5 [RAPPS] Romanian update by Ștefan Fulea. CORE-9034
svn path=/trunk/; revision=66004
2015-01-08 11:05:52 +00:00
Amine Khaldi
cec045f21e [URLMON][SHORTCUTS] Romanian update by Ștefan Fulea. CORE-9034
svn path=/trunk/; revision=66003
2015-01-08 10:56:38 +00:00
Amine Khaldi
aac93e5024 [TRANSLATIONS] General maintenance of Romanian resources by Ștefan Fulea. CORE-9034
svn path=/trunk/; revision=66002
2015-01-08 10:54:20 +00:00
James Tabor
be782dbced - Fix build.
svn path=/trunk/; revision=66001
2015-01-08 01:00:03 +00:00
James Tabor
2d94b2173f [Win32s]
- Implement DDE from wine. Leaving debug errors on the run and later move to trace. See CORE-7447.
- Use callbacks to User32 to convert the data and track it in Win32k.
- Add a new Quality of Service atom.
- Add things to class.c.
- Shell32 tests run now too, or only 4 run. This might be fixed too, since locating a lParam write back issue.

svn path=/trunk/; revision=66000
2015-01-08 00:56:51 +00:00
James Tabor
418366bf44 [User32]
- Fix DDE Server Class names to match system Atoms.

svn path=/trunk/; revision=65999
2015-01-07 21:47:33 +00:00
Hermès Bélusca-Maïto
cef76b7a93 [TOOLS]: Slap some sense in the indentation of some files. Next time: PLEASE CHECK YOUR F*CKING EDITOR's TABS AND SET THEM TO 4 SPACES BEFORE DOING ANYTHING ELSE!!!! (and not to 8 spaces and then use 4 space indentation and complete with tabs).
svn path=/trunk/; revision=65998
2015-01-07 19:26:49 +00:00
Hermès Bélusca-Maïto
30f966769f [SPEC2DEF]: Turn the tab character into its control code. Timo, is this tab really needed for ARM stubs, or not? (in that case maybe removing it would be better?)
svn path=/trunk/; revision=65997
2015-01-07 18:45:46 +00:00
Hermès Bélusca-Maïto
e0b0325c96 [HPP]: tab2space fixes.
svn path=/trunk/; revision=65996
2015-01-07 18:25:21 +00:00
Hermès Bélusca-Maïto
c67fcc673a [KBDTOOL]: Whitespace fixes.
svn path=/trunk/; revision=65995
2015-01-07 18:24:14 +00:00
Hermès Bélusca-Maïto
3f427653d8 [TOOLS]: Adds back kbdtool (Keyboard Layout Compiler), and hpp (Header File Preprocessor) too, to host-tools compilation.
svn path=/trunk/; revision=65994
2015-01-07 17:55:58 +00:00
James Tabor
4d380127d3 [Win32k]
- Answer my own question. Use the Extra Information long pointer to help traffic data. See CORE-7447.

svn path=/trunk/; revision=65993
2015-01-07 14:02:45 +00:00
Christoph von Wittich
1f48881307 [SHELL32_WINETEST]
do not skip progman_dde tests anymore

svn path=/trunk/; revision=65992
2015-01-07 09:58:38 +00:00
James Tabor
b204ea4aef [Win32k]
- Pass process ID to process information structure.

svn path=/trunk/; revision=65991
2015-01-06 04:17:20 +00:00
James Tabor
7de914f84e [Win32k]
- Fix control list of atoms.
- Add DDE atom.

svn path=/trunk/; revision=65990
2015-01-05 22:32:16 +00:00
James Tabor
0c9a650aa9 [ApiTest]
- Add a test for sequential list of control atoms. This is an addition to the Real Classes tests.

svn path=/trunk/; revision=65989
2015-01-05 22:25:48 +00:00
Hermès Bélusca-Maïto
bf3f878ee5 [FREELDR]: Make RamDiskLoadVirtualFile returning a BOOLEAN such that if we fail to load a Ram disk image, we can display an error message and abort boot.
svn path=/trunk/; revision=65988
2015-01-05 22:24:56 +00:00
Hermès Bélusca-Maïto
2bc6104f3d [SNDREC32]: I've just learnt that in Spanish they use the "principle of least capitalization", so follow this rule :D Thanks Ismael for having taught me this rule xD
svn path=/trunk/; revision=65987
2015-01-05 22:00:00 +00:00
Hermès Bélusca-Maïto
6ed8a87e4d [SNDREC]
- Uppercase fixing for the english app title of Sound Recorder. From a suggestion by Jared.
- Fix some french translation.
- Fix some "reactos_sndrec32" thingie in other languages.

Translators, please review and fix the translations!

CORE-9029 #resolve #comment Corrected in revision 65986, thanks!

svn path=/trunk/; revision=65986
2015-01-05 21:26:46 +00:00
James Tabor
78a30834a2 [Win32k]
- Get DDE working halfway. Pass more tests but still missing other tests. See CORE-7447.

svn path=/trunk/; revision=65985
2015-01-05 19:44:49 +00:00
Hermès Bélusca-Maïto
e36f91e0de [FREELDR]: Fix all (?, or almost?) LONG Status; into ARC_STATUS, and the awfully ugly BOOLEAN Status into BOOLEAN Success.
svn path=/trunk/; revision=65984
2015-01-05 01:34:29 +00:00
Hermès Bélusca-Maïto
a1b3d1f7e8 [USETUP]: "/RDIMAGEPATH" was a relinquish of very old FreeLdr code, at the time we had a special ReactOS boot method. Now we use a NTLDR-compatible switch "/RDPATH".
svn path=/trunk/; revision=65983
2015-01-05 00:46:08 +00:00
Hermès Bélusca-Maïto
1ebcd68f0d [FREELDR]
- Correctly append a backslash to the BootPath (if needed).
- Be able to specify relative boot paths (relative to the current boot device): as a consequence, remove the "LiveCD" hackish special value that was introduced long long ago.
- Fix BootPath retrieval in ReactOSSetup mode (via the SystemPath optional value), and use a better way to build the temporary txtsetup.sif full file names.

As a consequence we can now build hybrid cds with the following architecture:
\
--> loader\ (bootsectors + free/setupldr.sys)
--> myboot\ (contents of what_defaults_to_reactos directory for the bootcd)
--> mylive\ (contents of what_defaults_to_reactos directory for the livecd)
--> <regular_files>
and
freeldr.ini specifying the following values:

; The Setup entry
[Setup]
BootType=ReactOSSetup
SystemPath=\myboot

; The LiveCD entry
[LiveCD]
BootType=Windows2003
SystemPath=\mylive
Options=/MININT

Part 2/2
CORE-9023

svn path=/trunk/; revision=65982
2015-01-04 23:49:18 +00:00
Hermès Bélusca-Maïto
614b562bb0 [FREELDR]
- Some whitespace fixes in fs.h and code simplifications in fs.c
- Make FsOpenFile working correctly on non-ARC and ARC file names.
- Use FsOpenFile for opening ramdisks instead of ArcOpen (the file "handle" returned by FsOpenFile is just the FileId for ARC functions). Therefore we can open ramdisks files using Windows OSLOADER syntax, i.e. /RDPATH=the_image_file instead of being forced to append for example: net(0) (as in: /RDPATH=net(0)\the_image_file ): see http://lokniketan.org/index.php?title=PXE_booting_to_BARTPE#Work_with_files_in_the_TFTPBOOT_directory for an example of what I mean.

Part 1/2
CORE-9023

svn path=/trunk/; revision=65981
2015-01-04 23:41:14 +00:00
James Tabor
5ef2270ad9 [User32]
- Disable Ime Class support until Win32k Init bugs are fixed. 8^( Fix test bot.

svn path=/trunk/; revision=65980
2015-01-04 19:40:56 +00:00
Hermès Bélusca-Maïto
9ac9e563c2 [FREELDR] Some more code reorg before real fixes happen.
svn path=/trunk/; revision=65979
2015-01-04 19:37:12 +00:00
James Tabor
4b33c4ba90 [User32]
- Now move Dde function from stubs.

svn path=/trunk/; revision=65978
2015-01-04 19:34:58 +00:00
James Tabor
ee1b62f7f1 [Win32s]
- Implement Ime (only) class support. This is for the new synced class tests. Recommending Developers choice for testing real Imm32.dll support. Should include registry Loading of IMM via Win32k.
- Based on patch by Piotr Caban : Move IME window procedure to user32.

svn path=/trunk/; revision=65977
2015-01-04 19:27:40 +00:00
James Tabor
b74720f96d [Win32k]
- Move DDE stuff into its own file. Oh, the stub file too... Fix build.

svn path=/trunk/; revision=65976
2015-01-04 18:15:20 +00:00
James Tabor
f06c2230de [Win32k]
- Move DDE stuff into its own file.

svn path=/trunk/; revision=65975
2015-01-04 18:12:41 +00:00
Hermès Bélusca-Maïto
df529736f3 [FREELDR]: DiskGetBootPath can recognize ramdisk now.
svn path=/trunk/; revision=65974
2015-01-04 17:08:41 +00:00
Hermès Bélusca-Maïto
7e2cc1475e [FREELDR]: Small code style fixes; add a comment about the extra PXE check case in PcDiskGetBootPath. Fix also its return value.
svn path=/trunk/; revision=65973
2015-01-04 16:43:42 +00:00
Hermès Bélusca-Maïto
6c0accfe86 [FREELDR]: Whitespace fixes only.
svn path=/trunk/; revision=65972
2015-01-04 16:42:37 +00:00
Eric Kohl
c5626957ba [FMIFS]
Implement Format().

svn path=/trunk/; revision=65971
2015-01-04 15:34:23 +00:00
Eric Kohl
b7aadbcb61 [KERNEL32]
Tabs -> Spaces

svn path=/trunk/; revision=65970
2015-01-04 15:28:43 +00:00
Eric Kohl
ed6621d704 [USETUP]
- Revert partiton code to pre-r65855.


svn path=/trunk/; revision=65969
2015-01-04 13:53:45 +00:00
Hermès Bélusca-Maïto
72f7db1391 [FREELDR]: Do the same thing as how we fill out the ARC disk block elsewhere.
svn path=/trunk/; revision=65968
2015-01-04 13:01:14 +00:00
Hermès Bélusca-Maïto
f1b69f4958 [FREELDR]: Use boolean value.
svn path=/trunk/; revision=65967
2015-01-04 12:49:38 +00:00
Aleksandar Andrejevic
fc8f7e53b2 [FAST486]
Fix FPU exceptions (again).


svn path=/trunk/; revision=65966
2015-01-03 22:24:40 +00:00
Hermès Bélusca-Maïto
0a9c7876a7 Tab2Space changes.
svn path=/trunk/; revision=65965
2015-01-03 22:18:36 +00:00
Hermès Bélusca-Maïto
9743a65b37 [FREELDR][INCLUDES]
- ARC disk functions return ARC_STATUS codes (that are ULONG btw, not LONG). Fix prototypes where needed.
- Rearrange a bit our arc.h header by putting together related structures.

[FREELDR]
- Remove arcemul/time.c (put functions back into machine.c). ARC functions should use some SYSTEM_PARAMETER_BLOCK firmware vector array instead...

svn path=/trunk/; revision=65964
2015-01-03 20:45:34 +00:00
Hermès Bélusca-Maïto
66ef750fba [FREELDR]
- Move inXfile and rtl code into a lib subdir,
- Minor comment formatting.

svn path=/trunk/; revision=65963
2015-01-03 16:51:26 +00:00
Eric Kohl
a5c4f052be [USETUP]
Implement pre-install 'select format' and 'format' pages. These enable the user to re-format an existing install partitition.

CORE-9005 #resolve

svn path=/trunk/; revision=65962
2015-01-03 15:33:22 +00:00
Aleksandar Andrejevic
44c816e20c [FAST486][NTVDM]
Use an external interrupt for the FPU when the NE bit of CR0 is cleared.


svn path=/trunk/; revision=65961
2015-01-03 15:16:41 +00:00
Amine Khaldi
c765ca5556 [ROSAPPS] Convert resource files to UTF-8. By Alvin Wong. CORE-9021
svn path=/trunk/; revision=65960
2015-01-03 10:58:32 +00:00
Amine Khaldi
f7b25c90b7 [BUSLOGIC][EXPLORER_OLD][EXT2][FDEBUG][MSDMO] Convert resource files to UTF-8. By Alvin Wong. CORE-9021
svn path=/trunk/; revision=65959
2015-01-03 10:48:28 +00:00
Amine Khaldi
7455ea1766 [KEYBOARD] Convert resource files to UTF-8. By Alvin Wong. CORE-9021
svn path=/trunk/; revision=65958
2015-01-03 10:45:58 +00:00
Amine Khaldi
c5624975e5 [WIN32DLLS] Convert resource files to UTF-8. By Alvin Wong. CORE-9021
svn path=/trunk/; revision=65957
2015-01-03 10:34:01 +00:00
Amine Khaldi
8ca128cbf7 [SHELLEXT] Convert resource files to UTF-8. By Alvin Wong. CORE-9021
svn path=/trunk/; revision=65956
2015-01-03 10:18:03 +00:00
Amine Khaldi
6a92370e00 [CPL] Convert resource files to UTF-8. By Alvin Wong. Translators, please review! CORE-9021
svn path=/trunk/; revision=65955
2015-01-03 10:11:31 +00:00
Amine Khaldi
605dd2e44d [APPLICATIONS] Convert resource files to UTF-8. By Alvin Wong. Translators, please review! CORE-9021
svn path=/trunk/; revision=65954
2015-01-03 09:53:01 +00:00
Amine Khaldi
8fef5fac15 [MSCUTILS] Convert resource files to UTF-8. By Alvin Wong (alvinhochun - gmail). Translators, please review! CORE-9021
svn path=/trunk/; revision=65953
2015-01-03 09:45:55 +00:00
Amine Khaldi
8bf23c232f [CMDUTILS] Convert resource files to UTF-8. By Alvin Wong (alvinhochun - gmail). Translators, please review! CORE-9021
svn path=/trunk/; revision=65952
2015-01-03 09:35:09 +00:00
Amine Khaldi
17acb5b51b [OSK] Don't use a PCH for one source file.
svn path=/trunk/; revision=65951
2015-01-03 09:16:23 +00:00
Amine Khaldi
0533a6dcc7 [CMD] Fix duplicated ID in resources. GCC build of course doesn't warn/error about this but MSVC does. CORE-9020
svn path=/trunk/; revision=65950
2015-01-03 09:10:47 +00:00
Christoph von Wittich
df7cb92235 [GDI32_WINETEST]
don't skip metafile tests anymore
#ROSTESTS-4

svn path=/trunk/; revision=65949
2015-01-03 08:42:02 +00:00
James Tabor
e004d2381e [Win32ss]
- Use proper structure name for packed DDE.

svn path=/trunk/; revision=65948
2015-01-03 06:22:31 +00:00
James Tabor
96caf0ad2d [User32]
- Move dde.c to ddemisc.c to keep the same name as the wine counter part.
- Use dde.c for ReactOS based functions.

svn path=/trunk/; revision=65947
2015-01-03 04:39:20 +00:00
Aleksandar Andrejevic
f122f72179 [FAST486]
Fix a bug in UnsignedDivMod128.


svn path=/trunk/; revision=65946
2015-01-03 03:52:50 +00:00
Aleksandar Andrejevic
d8f89bc80c [FAST486]
Halfplement floating point division.
Halfplement opcode 0xD9.


svn path=/trunk/; revision=65945
2015-01-03 03:26:31 +00:00
Hermès Bélusca-Maïto
af8ae44bc4 Remove unneeded .cvsignore files.
svn path=/trunk/; revision=65944
2015-01-02 23:44:04 +00:00
Hermès Bélusca-Maïto
07ebe5c56b Fix member size in the SETUP_LOADER_BLOCK structure.
svn path=/trunk/; revision=65943
2015-01-02 23:10:44 +00:00
Aleksandar Andrejevic
39d88ba65b [FAST486]
Implement the FWAIT instruction.
Fix FPU exception handling. Implement exception masking.
Fix several other bugs and wrong definitions.


svn path=/trunk/; revision=65942
2015-01-02 21:19:31 +00:00
Hermès Bélusca-Maïto
f4cafa72d4 [CONSRV]: We can return the real NTSTATUS code instead of a STATUS_UNSUCCESSFUL. Noticed by Thomas some time ago. I kept the STATUS_UNSUCCESSFUL first because I didn't want to change the returned status code as it was before the changes of r65449. But I changed my mind since then! d8^)
svn path=/trunk/; revision=65941
2015-01-02 20:32:44 +00:00
Aleksandar Andrejevic
3e9c5864e7 [FAST486]
Split the D8/DC opcode handler into two handlers to eliminate the extra branch.
Implement opcode DF (New instructions: FBLD and FBSTP).


svn path=/trunk/; revision=65940
2015-01-02 18:29:30 +00:00
Amine Khaldi
e42181da22 [CRYPT32] Remove redundant code_page pragma. Remove redundant cryptres.h inclusion.
svn path=/trunk/; revision=65939
2015-01-02 14:14:17 +00:00
Benedikt Freisen
afea95d6b8 [MSPAINT] partially apply patch by swyter (bugfixes only). See CORE-5644
svn path=/trunk/; revision=65938
2015-01-02 13:58:25 +00:00
Amine Khaldi
741c7726db [TRANSLATIONS] Additional Spanish locale fixes and enhancements by Ismael Ferreras Morezuelas. CORE-9014
svn path=/trunk/; revision=65937
2015-01-02 13:08:07 +00:00
Amine Khaldi
a9971a2a04 [MSGINA] Remember the previous choice in the shutdown dialog. Brought to you by Ricardo Hanke. CORE-8992
svn path=/trunk/; revision=65936
2015-01-02 11:20:35 +00:00
Aleksandar Andrejevic
19116d3a60 [FAST486]
Fix several serious bugs in Fast486FpuToInteger.
Halfplement opcode 0xDD (everything except FRSTOR and FSAVE).
Cleanup the code a little bit.


svn path=/trunk/; revision=65935
2015-01-01 22:51:21 +00:00
Aleksandar Andrejevic
cc0c2313c3 [FAST486]
Implement opcode 0xDE (New instructions: FADDP, FMULP, FCOMPP, FSUBRP, FSUBP, FDIVRP and FDIVP).
Fix a bug in the 0xD8/0xDC opcode handler.


svn path=/trunk/; revision=65934
2015-01-01 19:20:44 +00:00
Aleksandar Andrejevic
62af7c6673 [FAST486]
Implement opcode 0xDA (FIADD, FIMUL, FICOM, FICOMP, FISUB, FISUBR, FIDIV, FIDIVR and FUCOMPP).


svn path=/trunk/; revision=65933
2015-01-01 18:05:45 +00:00
Hervé Poussineau
7df9b77837 [SETUPAPI] Handle Strings section with sub-language neutral
svn path=/trunk/; revision=65932
2015-01-01 17:08:19 +00:00
Timo Kreuzer
6be3688ad1 [WIN32K]
"unfix" ROP_TO_ROP4, it was correct before, but the used ROP in NtGdiInvertRgn was not correct. Fixes display of shortcuts.

svn path=/trunk/; revision=65931
2015-01-01 15:14:45 +00:00
Giannis Adamopoulos
514b38fec2 [MSGINA]
- Implement initializing themes as msdn suggests. We don't have shsvcs.dll yet but it doesn't harm to make our gina themes ready. 
See http://support.microsoft.com/kb/KbView/322047

svn path=/trunk/; revision=65930
2015-01-01 11:55:50 +00:00
Giannis Adamopoulos
4ee6f68f4d [WINLOGON]
- Implement calling SetWindowStationUser
See http://msdn.microsoft.com/en-us/library/windows/desktop/aa380571%28v=vs.85%29.aspx and  http://msdn.microsoft.com/en-us/library/windows/desktop/aa446670%28v=vs.85%29.aspx

svn path=/trunk/; revision=65929
2015-01-01 11:43:40 +00:00
Aleksandar Andrejevic
d89cf74100 [FAST486]
Finish implementing FPU opcode 0xDB (FILD, FIST, FISTP, FLD, FSTP).


svn path=/trunk/; revision=65927
2015-01-01 04:25:09 +00:00
Hermès Bélusca-Maïto
e274681598 [REACTOS]: Versioning for 2015, and...
... Happy New Year 2015 for everybody!

☆.¸¸.•´☆.¸¸.•´☆.¸¸.•´☆.¸¸.•´☆.¸¸.•´☆.¸¸.•´

⋱★⋰⋱☆⋰⋱★⋰⋱☆⋰⋱☆⋰⋱★⋰⋱☆⋰⋱★⋰⋱☆⋰
░░░░░░█░█ █▀█ █▀█ █▀█ █░█░░░░░░
░░░░░░█▀█ █▀█ █▀▀ █▀▀ ▀█▀░░░░░░
░░░░░░▀░▀ ▀░▀ ▀░░ ▀░░ ░▀░░░░░░░
█▄░█ █▀▀ █░█░█░░█░█ █▀▀ █▀█ █▀█
█░██ █▀▀ █░█░█░░▀█▀ █▀▀ █▀█ ██▀
▀░░▀ ▀▀▀ ░▀▀▀░░░░▀░ ▀▀▀ ▀░▀ ▀░▀
⋱☆⋰⋱★⋰⋱☆⋰⋱★⋰⋱★⋰⋱☆⋰⋱★⋰⋱☆⋰⋱★⋰

░░░▄████▄░▄███▄░░▄██░██████░░░
░░░▀▀░▄██░██░██░████░██▄▄▄░░░░
░░░░▄██▀░░██░██░░░██░▄▄░▀██░░░
░░░██████░▀███▀░░░██░▀████▀░░░

☆.¸¸.•´☆.¸¸.•´☆.¸¸.•´☆.¸¸.•´☆.¸¸.•´☆.¸¸.•´

svn path=/trunk/; revision=65926
2014-12-31 23:00:30 +00:00
Hermès Bélusca-Maïto
1e56397645 [ICONS]
- Use a better icon for the bootcd.
- Replace the GUI ReactOS Setup program icon with a better one, copied from msiexec (just to note, the "setup" icon from shell32 and appwiz are the same as msiexec one). Inspired from CORE-8971.

svn path=/trunk/; revision=65925
2014-12-31 22:26:19 +00:00
Hermès Bélusca-Maïto
12af51d23f Maybe the last committed patch of year 2014!
[CMD]
Enhance the "ver" command, specifying the OS on which cmd.exe runs (that can be different from ReactOS!) and the reported OS version when using the $V prompt format specifier.
Patch by Lee Schroeder, with modifications by me, see the report for more details.
CORE-8970 #resolve #comment Committed in revision 65924, thanks!

svn path=/trunk/; revision=65924
2014-12-31 21:22:49 +00:00
Eric Kohl
8235a5df62 [USETUP]
You can install ReactOS on 'unpartitioned space' again. Usetup will create a primary partition that spans the whole unpartitioned space, format the partition and install ReactOS on that partition.

svn path=/trunk/; revision=65923
2014-12-31 20:51:56 +00:00
Amine Khaldi
c7e2c1e0f8 [TRANSLATIONS] Spanish translation update by Ismael Ferreras Morezuelas. CORE-8991
svn path=/trunk/; revision=65922
2014-12-31 19:16:03 +00:00
Timo Kreuzer
9c81da0f9c [WIN32K]
Use the correct flags member in the DC to mark the RAO region dirty.

svn path=/trunk/; revision=65921
2014-12-31 17:10:59 +00:00
Timo Kreuzer
6cf32db099 [WIN32K]
Mark RAO region as dirty in NtGdiSelectBitmap, hopefully fixes CORE-8989

svn path=/trunk/; revision=65920
2014-12-31 16:22:23 +00:00
Timo Kreuzer
7b0c1877b9 [WIN32K]
Rewrite IntEngMaskBlt to work with device managed surfaces. Should fix CORE-7821 and CORE-8711

svn path=/trunk/; revision=65919
2014-12-31 15:15:44 +00:00
Timo Kreuzer
b193a23ecc [WIN32K]
Fix calculation of the source point in EngCopyBits for complex clipping regions. One might assume that this function is so essential, that it would do at least the most basic stuff correctly, but ...

svn path=/trunk/; revision=65918
2014-12-31 15:15:39 +00:00
Pierre Schweitzer
3de56b3af4 [FREELDR]
Display an error message with the file name in case we cannot get a file size over PXE.

This makes the error message "(../../boot/freeldr/freeldr/fs/pxe.c:107) err: PxeCall(0x25, 0000E8DE) failed with exit=1 status=0x1" in case of PXE boot less dramatic: it is expected not to find NTBOOTDD.SYS

svn path=/trunk/; revision=65917
2014-12-31 13:04:04 +00:00
Eric Kohl
20b0193d01 [USETUP]
Move the code that updates the partition type from FormatPartitionPage to a separate function (UpdatePartitionType) and call it from SelectPartitionPage. This fixes the creation of primary partitions.

svn path=/trunk/; revision=65916
2014-12-31 10:09:28 +00:00
Hermès Bélusca-Maïto
971bd0510b [WIN32K]: Some whitespace fixes. This gives me also the occasion to test few things:
░░░░░░█ █ █▀▀ █   █   █▀█░░░░░
░░░░░░█▀█ █▀▀ █ ▄ █ ▄ █ █░░░░░
░░░░░░▀ ▀ ▀▀▀ ▀▀▀ ▀▀▀ ▀▀▀░░░░░

░░░░░░█ █ █▀▀ █   █   █▀█░░░░░
░░░░░░█▀█ █▀▀ █ ▄ █ ▄ █ █░░░░░
░░░░░░▀ ▀ ▀▀▀ ▀▀▀ ▀▀▀ ▀▀▀░░░░░

!error RosBuild: dance
RosBuild: dance
RosKGB: hi!

svn path=/trunk/; revision=65915
2014-12-30 21:58:12 +00:00
Timo Kreuzer
1cb80f3aa0 [WIN32K]
- Fix definition of ROP_TO_ROP4
- Move some macros to intgdi.h
- Fix coordinate space mismatch in IntGdiBitBltRgn and IntGdiFillRgn
Fixes console window selection

svn path=/trunk/; revision=65914
2014-12-30 21:03:13 +00:00
Eric Kohl
1624612861 [USETUP]
InstallDirectoryPage1: Initialize DestinationRootPath. ReactOS can be installed on an existing partition again.
CORE-8984 #resolve

svn path=/trunk/; revision=65913
2014-12-30 20:17:27 +00:00
Timo Kreuzer
e7d3b42a46 [WIN32K]
Make sure the PDEV is locked before dereferencing the DC's surface

svn path=/trunk/; revision=65912
2014-12-30 19:38:41 +00:00
Timo Kreuzer
56aa42fe6e [WIN32K]
Simplify updating prgnVis in NtGdiSelectBitmap

svn path=/trunk/; revision=65911
2014-12-30 19:38:37 +00:00
Timo Kreuzer
3c30e5af66 [WIN32K]
- Rewrite NtGdiInvertRgn to not violate locking order
- Remove DceUpdateVisRgn from DC_vPrepareDCsForBlit: It is not GDI's task to handle Window clipping, it violates locking order, it's slow, it's ugly to call USER functions from GDI internals, it's a hack. I couldn't see any clipping regression, if you find anything, let me know.

svn path=/trunk/; revision=65910
2014-12-30 19:38:07 +00:00
Pierre Schweitzer
e1f04ea0de [FREELDR]
Simplify the stack management in PxeCallApi(), we don't need that much

svn path=/trunk/; revision=65909
2014-12-30 13:51:41 +00:00
Timo Kreuzer
c21b05742a [GDI32]
Remove some breakpoints and add some DPRINTs.

svn path=/trunk/; revision=65908
2014-12-30 13:21:48 +00:00
Pierre Schweitzer
99461a5b67 [FREELDR]
Tab -> spaces

svn path=/trunk/; revision=65907
2014-12-30 13:14:33 +00:00
Hermès Bélusca-Maïto
7316e9742e [CALC]
Use RegCreateKeyEx to be able to create the settings registry key in case it doesn't already exist.
Patch by Ricardo Hanke.
CORE-8986 #resolve #comment Fixed, thanks!

svn path=/trunk/; revision=65906
2014-12-30 12:21:04 +00:00
Hervé Poussineau
2272ff8795 [FREELDR] Make the disk read buffer size dynamic
CORE-8772 CORE-8899 #resolve #comment Should be fixed in r65904. Thanks for reporting.

svn path=/trunk/; revision=65905
2014-12-30 11:53:09 +00:00
Hervé Poussineau
f654bb0d51 [RAMDISK] Send the right DeviceObject in IRP_MN_QUERY_DEVICE_RELATIONS
svn path=/trunk/; revision=65904
2014-12-30 11:53:05 +00:00
Hervé Poussineau
5a3a445b01 [RAMDISK] Set correct device object in drive extension
This allows booting ReactOS livecd using PXE.

Welcome ReactOS to the world of computers without harddisk/cdrom.

svn path=/trunk/; revision=65903
2014-12-29 23:21:25 +00:00
Pierre Schweitzer
b9f5240173 [RAMDISK]
Implement RamdiskQueryDeviceRelations() when the device is a drive

According to Hervé, this allows booting ReactOS livecd using PXE (with one of his patch).

svn path=/trunk/; revision=65902
2014-12-29 23:14:42 +00:00
Pierre Schweitzer
9532ddd779 [RAMDISK]
Simplify & use IoCopyCurrentIrpStackLocationToNext()

svn path=/trunk/; revision=65901
2014-12-29 22:55:21 +00:00
Pierre Schweitzer
9980552e04 [RAMDISK]
- Implement RamdiskQueryCapabilities() which is used in case of IRP_MJ_PNP + IRP_MN_QUERY_CAPABILITIES
- Implement RamdiskQueryDeviceText() which is used in case of IRP_MJ_PNP + IRP_MN_QUERY_DEVICE_TEXT
- Implement RamdiskQueryBusInformation() which is used in case of IRP_MJ_PNP + IRP_MN_QUERY_BUS_INFORMATION
- Implement RamdiskIoCompletionRoutine() which is the completion routine in case of IRP forwarding
- Also implement support for IRP_MJ_PNP + IRP_MN_START_DEVICE
- Define the RamdiskDiskInterface GUID

This slowly gets RamDisk driver PnP compliant...

svn path=/trunk/; revision=65900
2014-12-29 22:42:11 +00:00
Eric Kohl
ac0ac23b55 [USETUP]
Change the partition creation workflow, so that the user is forced to choose a file system type and format a partition after it has been created.

svn path=/trunk/; revision=65899
2014-12-29 21:23:30 +00:00
Pierre Schweitzer
33f089b6ae [RAMDISK]
Wait for 1 min max but don't limit the number of acquire, ie: swap inverted args.
This fixes ASSERT on use.

Spotted by Hervé

svn path=/trunk/; revision=65898
2014-12-29 21:22:49 +00:00
Hermès Bélusca-Maïto
cd50299dd2 [RAPPS]
Finish Japanese translation, fix by Ai Asano and reported by Marco Maria Emanuele Bartucci.
CORE-8983 #resolve #comment Fixed, thanks!

svn path=/trunk/; revision=65897
2014-12-29 21:12:06 +00:00
Pierre Schweitzer
bdcb167357 [RAMDISK]
Define the GUID_BUS_TYPE_RAMDISK GUID

svn path=/trunk/; revision=65896
2014-12-29 20:41:15 +00:00
Pierre Schweitzer
ff098a27eb [RAMDISK]
Implement RamdiskQueryId() which is used in case of IRP_MJ_PNP + IRP_MN_QUERY_ID

svn path=/trunk/; revision=65895
2014-12-29 18:00:50 +00:00
Aleksandar Andrejevic
4037b3b7c0 [WHOAMI]
Use ANSI when printing to the console. Fix the logic of LookupPrivilegeDisplayNameW.
Patch by Ismael Ferreras Morezuelas.

CORE-8965 #resolve #comment Committed in revision r65894. Thanks!


svn path=/trunk/; revision=65894
2014-12-29 16:20:00 +00:00
Timo Kreuzer
e6475301eb [GDI32]
Import metafile code from wine. The wine code is unmodified (please keep it that way) and used through a wrapper function dispatcher and some helpers. Fixes 1931 wine tests.

svn path=/trunk/; revision=65893
2014-12-29 14:25:30 +00:00
Timo Kreuzer
2bcae18ec6 [WIN32K]
Simplify and fix calculation of biCompression in GreGetDIBitsInternal

svn path=/trunk/; revision=65892
2014-12-29 14:16:16 +00:00
Hermès Bélusca-Maïto
7c39a4ecb6 [WIN32K]
- Add global user heap (un)map helper functions that will be used in other portions of code.
- For consistency purpose also add the note about the mapping in desktop.c (see r65863 for what I mean).
- Temporarily add many trace messages.

svn path=/trunk/; revision=65891
2014-12-29 13:56:28 +00:00
Hervé Poussineau
3793271edf [NTOS:IO] Add some debug prints for remove locks
svn path=/trunk/; revision=65890
2014-12-29 13:16:07 +00:00
Timo Kreuzer
503848e61e [GDI32]
In Escape() make use of GdiGetDcAttr(), GreatLordish -> English and fix copy-pasta in comments, improve formatting, remove some code that (attention euphemism) wasn't exactly correct.

svn path=/trunk/; revision=65889
2014-12-29 13:12:29 +00:00
Timo Kreuzer
c8bc34b358 [GDI32]
Fix some parameters in the spec file

svn path=/trunk/; revision=65888
2014-12-29 13:12:23 +00:00
Timo Kreuzer
685a373f23 [WINE]
Add LOGBRUSH16 and LOGPEN16 to wingdi16.h

svn path=/trunk/; revision=65887
2014-12-29 13:12:15 +00:00
Timo Kreuzer
2bf752a8fe [WIN32K]
Implement GdiGetEMFRestorDc case in NtGdiGetDCDword

svn path=/trunk/; revision=65886
2014-12-29 13:12:10 +00:00
Timo Kreuzer
5d0f363c9f [WIN32K]
- Implement GreCreateCompatibleDC, allowing to pass in a boolean value, specifying the DC type (normal or "alternative" DC, aka metafile DC)
- Properly implement NtGdiCreateMetafileDC around GreCreateCompatibleDC

svn path=/trunk/; revision=65885
2014-12-29 13:12:05 +00:00
Timo Kreuzer
ed7952a360 [WIN32K]
- Implement NtGdiGetObjectBitmapHandle
- Set BR_IS_DIBPALCOLORS in IntGdiCreateDIBBrush

svn path=/trunk/; revision=65884
2014-12-29 13:11:59 +00:00
Timo Kreuzer
30d86f26f4 [GDI32]
In DeleteObject handle ALTDC type, factor out GdiDeleteBrushOrPen, improve code a bit

svn path=/trunk/; revision=65883
2014-12-29 13:11:54 +00:00
Timo Kreuzer
a0624a040f [GDI32]
Improve client object code

svn path=/trunk/; revision=65882
2014-12-29 13:11:48 +00:00
Timo Kreuzer
292ef5fd5c [GDI32]
Improve GetROP2and SetROP2

svn path=/trunk/; revision=65881
2014-12-29 13:11:40 +00:00
Timo Kreuzer
b818c891bf [GDI32]
- Do not call BitBlt from StretchBlt when extension matches, this is handled in win32k
- Use GdiGetDcAttr

svn path=/trunk/; revision=65880
2014-12-29 13:11:35 +00:00
Timo Kreuzer
e4cf6cd543 [GDI32]
Improve code in painting.c:
- Add annotations
- Use consitent formatting
- Use better parameter/variable names

svn path=/trunk/; revision=65879
2014-12-29 13:11:31 +00:00
Timo Kreuzer
cab100d983 [GDI32]
Move PatBlt, GetROP2 and SetROP2 to appropriate source files

svn path=/trunk/; revision=65878
2014-12-29 13:11:27 +00:00
Timo Kreuzer
45309fa8bf [GDI32]
Add anotations to arc.c, replace an instance of the ugly gfx_worker with an RCAST() macro

svn path=/trunk/; revision=65877
2014-12-29 13:11:07 +00:00
Amine Khaldi
f27f53b630 [TRANSLATIONS] Chinese (zh-CN) translation update by Henry Tang Ih. CORE-8935
svn path=/trunk/; revision=65876
2014-12-29 12:56:47 +00:00
Timo Kreuzer
6532b23851 [PSDK]
Fix copypasta from r65873

svn path=/trunk/; revision=65875
2014-12-29 12:28:56 +00:00
Giannis Adamopoulos
137dbef056 [SHELL32]
* Give focus to the def view control when CDesktopBrowser gets focus.
CORE-8980

svn path=/trunk/; revision=65874
2014-12-29 12:24:03 +00:00
Timo Kreuzer
5aebc94de8 [PSDK]
Improve some prototypes in wingdi.h

svn path=/trunk/; revision=65873
2014-12-29 12:01:23 +00:00
Hervé Poussineau
9cf08cfa62 [RAMDISK] Explicit the relation type check
svn path=/trunk/; revision=65872
2014-12-29 09:07:01 +00:00
Hervé Poussineau
c45cee00e3 [RAMDISK] White space fixes
svn path=/trunk/; revision=65871
2014-12-29 09:06:58 +00:00
Pierre Schweitzer
ff326f0703 [NTOSKRNL]
Use the PIP_REGISTRY_DATA() for DevicePropertyInstallState case in IoGetDeviceProperty()

svn path=/trunk/; revision=65870
2014-12-28 22:48:08 +00:00
Pierre Schweitzer
5dd10d76b0 [RAMDISK]
Implement support for IOCTL_DISK_CHECK_VERIFY, IOCTL_STORAGE_CHECK_VERIFY, IOCTL_STORAGE_CHECK_VERIFY2, IOCTL_CDROM_CHECK_VERIFY

svn path=/trunk/; revision=65869
2014-12-28 22:37:55 +00:00
Hervé Poussineau
994d960b81 [NTOS:IOMGR] When booting from a ramdisk, always assign drive letter X: to it
The only incomplete part to boot the LiveCD from PXE is some support in ramdisk.sys

svn path=/trunk/; revision=65868
2014-12-28 22:33:17 +00:00
Hervé Poussineau
74872db16c [NTOS:PNPMGR] Implement IoGetDeviceProperty/DevicePropertyInstallState case
svn path=/trunk/; revision=65867
2014-12-28 22:33:11 +00:00
Hervé Poussineau
aa38d68da9 [FREELDR] Add missing dependency (required by scsiport.c)
svn path=/trunk/; revision=65866
2014-12-28 22:15:34 +00:00
Hervé Poussineau
3ce44c57db [WHOAMI] Better error message when we're unable to find the logon SID
svn path=/trunk/; revision=65865
2014-12-28 22:15:08 +00:00
Pierre Schweitzer
a371a9b498 [NTOSKRNL]
Add missing specifiers

svn path=/trunk/; revision=65864
2014-12-28 21:29:32 +00:00
Hermès Bélusca-Maïto
f2f466977a [WIN32K]
A bit of code reorganization:
- move a maximum of typedefs into their corresponding headers,
- move user heap functionality into a dedicated header,
- add a note in some functions that the first heap mapping entry in the W32 process info structure is dedicated for the global user heap mapping,
- remove extra-parenthesis in casts.

svn path=/trunk/; revision=65863
2014-12-28 20:50:35 +00:00
Pierre Schweitzer
1c36df367b [NTOSKRNL]
- In case of AssignSecurityDescriptor operation in IopGetSetSecurityObject(), put the security descriptor in cache before attempting the assignement
- In IopUnloadDevice(), don't attempt to free the security descriptor, let this to Ob by just derefencing it. Spotted & fixed by Thomas.

This unregresses VMware Tools installation.

CORE-7991

svn path=/trunk/; revision=65862
2014-12-28 18:31:06 +00:00
Hermès Bélusca-Maïto
3b73052bf8 [WIN32K]
Split init code into GDI part and USER part. Don't use Eng* functions to initialize the InputIdleEvent.
Part 2/x

svn path=/trunk/; revision=65861
2014-12-28 15:28:00 +00:00
Pierre Schweitzer
14cce518d3 [NTOSKRNL]
Also lock IopSecurityResource during access check in IopParseDevice

svn path=/trunk/; revision=65860
2014-12-28 13:15:14 +00:00
Thomas Faber
938f228699 [MSI]
- Apply Wine commit f41ac94e (msi: Include the terminating null in the buffer size for decoded stream names.) by Hans Leidekker. Fixes a stack buffer overflow when installing VMware Tools.

svn path=/trunk/; revision=65859
2014-12-28 13:05:48 +00:00
Hermès Bélusca-Maïto
37f198c7d6 [WIN32K]: Rework a bit the initialization code to modularize it a bit (some parts to be reused in other places). Part 1/x
svn path=/trunk/; revision=65858
2014-12-28 13:00:28 +00:00
Pierre Schweitzer
594d5a3366 [NTOSKRNL]
Acquire IopSecurityResource exclusive when required. Spotted by Thomas.

svn path=/trunk/; revision=65857
2014-12-28 12:57:58 +00:00
Pierre Schweitzer
ecb6067cf0 [NTOSKRNL]
- Implement IopGetDeviceAttachmentBase() which allows getting the base device of the device stack given any device object in it
- Implement IopGetDevicePDO() which returns the physical device object of the device stack given any device object in it
- Implement IopSetDeviceSecurityDescriptor() which will swap the old security descriptor of a device object with a new provided one
- Implement IopSetDeviceSecurityDescriptors() which will swap the old security descriptor with a new provided one in all the device objects from the lowest provided to the uppest provided one.
- Fix a fixme in IopGetSetSecurityObject(), the operation SetSecurityDescriptor is now fully implemented for both PDO & DO.

This is required by VMware driver vmci.sys.
Even though, the installation doesn't get any better; it just changes the BSOD, we now face a memory corruption (in SE).

CORE-7991

svn path=/trunk/; revision=65856
2014-12-28 10:05:29 +00:00
Eric Kohl
cdc15f3bc5 [USETUP]
Update the on-disk partition tables immediately after modifying the in-memory tables. 

svn path=/trunk/; revision=65855
2014-12-28 09:16:41 +00:00
Aleksey Bragin
9bf8864501 [RAPPS]
- Add another tiny text-editor Akelpad, which works "good enough" in ReactOS.
Suggested by sergeygraf@yandex.ru, patch created by rechitskiy@reactos.org

svn path=/trunk/; revision=65854
2014-12-27 22:19:36 +00:00
Hervé Poussineau
040f158fa7 [ADVAPI/LSASRV] Implement LookupPrivilegeDisplayNameA, LookupPrivilegeDisplayNameW, LsaLookupPrivilegeDisplayName, LsarLookupPrivilegeDisplayName
Also partly implement LsarpLookupPrivilegeDisplayName (currently, privilege description is the same as privilege name)

svn path=/trunk/; revision=65853
2014-12-27 19:57:42 +00:00
Hermès Bélusca-Maïto
a306e56c55 [WIN32K]
- Put GDI initialization function(s) in a dedicated file.
- Whitespace fixes...

svn path=/trunk/; revision=65852
2014-12-27 19:16:05 +00:00
David Quintana
1db4f01f36 [FRAMEDYN]
* Actually use the right declaration. Fixes MSVC builds.

svn path=/trunk/; revision=65851
2014-12-27 14:04:32 +00:00
Pierre Schweitzer
f89f1cdf72 [NTOSKRNL]
Rename IopSecurityFile() to IopGetSetSecurityObject()

svn path=/trunk/; revision=65850
2014-12-27 13:46:00 +00:00
Pierre Schweitzer
acd3478e17 [FRAMEDYN]
Partly implement the Provider class from WMI.
This allows VMware Tools installer to complain a bit less about imports not found.

The installation still fails and still ends with a BSOD though.

CORE-7991

svn path=/trunk/; revision=65849
2014-12-27 13:33:14 +00:00
Daniel Reimer
959a34dc79 [RAPPS]
Add WINE Mono to RAPPS
CORE-8871 #resolve #comment Added to RApps DB.

svn path=/trunk/; revision=65848
2014-12-27 13:00:03 +00:00
Eric Kohl
27ff04d62b [USETUP]
- Re-enable the partition size check and display a warning if the install partition is too small.
- Update the required install partition size to 550MB.

svn path=/trunk/; revision=65847
2014-12-27 12:33:59 +00:00
Eric Kohl
9eba5bef02 [USETUP]
AddPartitionToDisk: Initialize DiskEntry pointer for existing partition entries.

svn path=/trunk/; revision=65846
2014-12-27 10:15:32 +00:00
James Tabor
5960c70f39 [Win32ss]
- Add header for Ime information. Setup support for Ime types and hot keys.
- Finish keyboard processing changes and call Imm process key for callback to user mode.

svn path=/trunk/; revision=65845
2014-12-27 06:59:29 +00:00
James Tabor
606ab6ed88 [w32knapi]
- Add Imm.h.

svn path=/trunk/; revision=65844
2014-12-27 06:33:48 +00:00
James Tabor
b4b8065c8c [Include]
- Add mod switch for SAS hotkey support.
- Add ImmProcessKey return flags, works the same as ImmProcessHotKey for WinCE.

svn path=/trunk/; revision=65843
2014-12-27 04:18:17 +00:00
James Tabor
594e534dd0 [Win32k]
- Move IME from stubs into its own file. Add flags and types to main header.
- Later, how to add Ime.h from mingw (tested it and works) and not effect VC++ ? VC SDK has Ime.h.
- Getting ready for Window Class update based on current wine tests.

svn path=/trunk/; revision=65842
2014-12-27 03:00:09 +00:00
Hermès Bélusca-Maïto
5f8ea303ee Whitespace fix.
svn path=/trunk/; revision=65841
2014-12-26 20:55:30 +00:00
Amine Khaldi
c84c201e3a [DXDIAG] Fix tab content redraw problem. By Lee Schroeder. CORE-8734
svn path=/trunk/; revision=65840
2014-12-26 14:33:14 +00:00
Amine Khaldi
9770259814 [FONTVIEW][MPLAY32][MSPAINT][TASKMGR] Chinese (zh-CN) translation update by Henry Tang Ih. CORE-8935
svn path=/trunk/; revision=65839
2014-12-26 14:18:02 +00:00
Amine Khaldi
55a9afa14c [WINLOGON][USER32] SetLogonNotifyWindow has only one parameter. Spotted by Giannis Adamopoulos. CORE-8174
svn path=/trunk/; revision=65838
2014-12-26 14:06:23 +00:00
Eric Kohl
9b71ae1269 [NOTEPAD]
Fix check mark of the status bar menu item.
Fix is based on mudheads patch.
CORE-8297 #resolve

svn path=/trunk/; revision=65837
2014-12-26 14:06:19 +00:00
Eric Kohl
df82e81f89 [SYSDM]
Fix startup and recovery option dialog issues.
Patch by Ricardo Hanke.
Thanks a lot!
CORE-8952 #resolve

svn path=/trunk/; revision=65836
2014-12-26 13:11:57 +00:00
Hermès Bélusca-Maïto
bf2b5fda05 [WIN32K]: Anecdotal formatting/renaming changes before reusing this code in other parts of wijn32k.
svn path=/trunk/; revision=65835
2014-12-26 12:06:43 +00:00
Pierre Schweitzer
5ad81a46e3 [DXDIAG]
Update French translation

svn path=/trunk/; revision=65834
2014-12-26 11:40:17 +00:00
Hervé Poussineau
6a3a03c719 [FREELDR] Support custom SystemPath and ramdisk in setup phase
We can now start ReactOS installation via PXE boot.

svn path=/trunk/; revision=65833
2014-12-26 11:38:43 +00:00
Hervé Poussineau
948e82af18 [FREELDR] Merge setupldr_pe and freeldr_pe
svn path=/trunk/; revision=65832
2014-12-26 11:38:39 +00:00
Hervé Poussineau
d8fc6d0000 [NTFS] Be verbose only on unimplemented FSCTL requests we're supposed to handle
svn path=/trunk/; revision=65831
2014-12-26 11:38:35 +00:00
Hervé Poussineau
723f55af2c [NTOS:CC] Fix some debug prints
svn path=/trunk/; revision=65830
2014-12-26 11:38:31 +00:00
Pierre Schweitzer
373fb8c25c [CHARMAP]
Fix the following issues:
- Skip rotated font (font name starting with "@" char)
- Fix a comment (misspelled "Richedit")
- Fix enlarged preview font in font name is long (it truncated font name in 31 chars when copying)
- Fix 2 magic values (255 here is not meaningful, and it doesn't even entirely showing Unicode Plane 0) 

Patch by Roy Tam.

CORE-8966 #resolve #comment Thanks. Commited in r65829.

svn path=/trunk/; revision=65829
2014-12-26 11:02:47 +00:00
James Tabor
51cd3cccb9 - Patch by Aric Stewart : Pass WM_IME_CONTROL messages to the IME.
svn path=/trunk/; revision=65828
2014-12-26 00:44:36 +00:00
Thomas Faber
fdc61d524b [WIN32K:NTUSER]
- Don't forget to ProbeForWrite in NtUserProcessConnect
- Use SEH in NtUserSetInformationThread:UserThreadCsrApiPort

svn path=/trunk/; revision=65827
2014-12-25 23:10:47 +00:00
Pierre Schweitzer
8783434e42 [WHOAMI]
Add French translation
It's totally broken though because the util directly writes Unicode to console. That should be fixed (see CORE-8965).

svn path=/trunk/; revision=65826
2014-12-25 22:01:29 +00:00
Hermès Bélusca-Maïto
ea4e02fba0 [USER32]
- CreateSystemThreads' parameter is unused, and the parameter of ONEPARAM_ROUTINE_CREATESYSTEMTHREADS win32k system call is set to TRUE when creating system threads in "remote processes", i.e. not CSRSS.
- Few code formatting fixes.
CORE-8949

svn path=/trunk/; revision=65825
2014-12-25 15:50:07 +00:00
Hermès Bélusca-Maïto
5195c10036 [WIN32K]: Change the enum id name for something meaningful (here: PROC == process and not procedure).
svn path=/trunk/; revision=65824
2014-12-25 15:27:31 +00:00
Hermès Bélusca-Maïto
13a6f58a0a [USER32]: Fix whitespace. Everybody knows that our user32/win32k modules are the best examples of good programming, indentation rules and so on...
svn path=/trunk/; revision=65823
2014-12-25 15:03:48 +00:00
David Quintana
fca4b3f636 [RSHELL]
* Add a copy of CBandSite to rshell, so we can debug it in windows with our explorer.

svn path=/trunk/; revision=65822
2014-12-24 17:00:53 +00:00
David Quintana
3b182d93b2 [BROWSEUI]
* Do not make browseui an NT6 dll just because it has a missing include and it needs a few previously undocumented constants. We can just define them in an undoc header.

svn path=/trunk/; revision=65821
2014-12-24 16:14:10 +00:00
Hermès Bélusca-Maïto
7afb72e9a2 [WIN32K]
Fix NtUserProcessConnect to use the process handle we give to it, instead of the "current process"... This should fix the user32 CSR connection that I was failing to fix in previous revisions...
CORE-8949

svn path=/trunk/; revision=65820
2014-12-24 15:48:37 +00:00
Hermès Bélusca-Maïto
84b91a7f5f [NETSHELL]
Fix flags usage for LoadImage / CopyImage, that made network tray applet icons uglily being downscaled from 32px versions instead of their 16px counterparts.

svn path=/trunk/; revision=65819
2014-12-24 15:25:42 +00:00
James Tabor
e0bd16e270 - Fix, always something, thank you Thomas.
svn path=/trunk/; revision=65818
2014-12-24 00:18:03 +00:00
Hermès Bélusca-Maïto
56347a8b98 [WIN32K]
Reintroduce CSR support for kernel mode, based on code from Ge that was wiped out in revision 58770, and by ntdll CSR code. Is needed for kernel to user-mode CSR callbacks.

For readers, I remind you the big callback picture in the Win32 subsystem:
- In Windows NT 3.1 and 3.51, USER and GDI was modeled against client/server model (USER32.DLL and WINSRV.DLL, and GDI32.DLL and GDISRV.DLL), all running in user mode (using the CSR API).
- Starting Windows NT 4.0 (and up), some USER and GDI parts were moved into kernel mode (in the WIN32K.SYS driver) to speedup communication. We get:
  * GDI32.DLL as the client, doing win32k system calls (kernel-mode system calls to win32k),
  * and USER32.DLL, WINSRV.DLL and WIN32K.SYS working in tandem, USER32.DLL being the client and {WINSRV.DLL, WIN32K.SYS} being the server.
    USER32.DLL can do win32k system calls or CSR calls to WINSRV.DLL (client to server calls). For server-to-server calls, we have WINSRV.DLL
    doing win32k system calls, or WIN32K.SYS doing CSR calls back to WINSRV.DLL . Also, there is the possibility for WIN32K.SYS to make user-mode
    callbacks to USER32.DLL.

svn path=/trunk/; revision=65817
2014-12-23 21:17:24 +00:00
Hermès Bélusca-Maïto
eacca6fe3e [NTDLL]: Whitespace fixes. No code changes.
svn path=/trunk/; revision=65816
2014-12-23 20:35:42 +00:00
James Tabor
4b6fb8acdf [NtUser]
- Crash while in recursion through hook calls. Move fast calls to api. Placed safe guards for removing message queue structures. Lock threads while calling hooks. Just add paranoid code to prevent recursion freeing that will crash the kernel at some point. Fixes OpenMPT crashes, see CORE-8819. This might improve the same issues with CORE-6734.

svn path=/trunk/; revision=65815
2014-12-23 19:05:44 +00:00
Amine Khaldi
117b0daf21 [KDVBOX] Properly handle the ASM source file.
svn path=/trunk/; revision=65814
2014-12-23 19:01:02 +00:00
Timo Kreuzer
69512e2d9b [KDVBOX]
Implement a virtualkd compatible kernel debugger transport DLL. I started this, because I didn't manage to get the original one working, but it turned out, the original one works, you only need to use the correct virtualkd version. Anyway, it's there now. A virtualkd version that works with VBox 4.3.16+ can be found here: http://forum.sysprogs.com/viewtopic.php?f=4&t=3370 or here: http://public.avast.com/~hnanicek/VirtualKd.zip
The folder is called kdvm, since I thought about adding support for VMWare as well, but here the original one probably works as well.
Also fix my email address in some files.

svn path=/trunk/; revision=65813
2014-12-23 17:48:16 +00:00
Hermès Bélusca-Maïto
a9305dd7bb [SHORTCUTS]
Fix Explorer shortcut icon. Patch by Jared.
CORE-8955 #resolve #comment Fixed in r65812, thanks!

svn path=/trunk/; revision=65812
2014-12-23 17:11:00 +00:00
Hermès Bélusca-Maïto
f743d127e7 [USER32]
Reenable some disabled tests, while disabling some other calls, namely:
- code in ClientThreadStartup (that was moved in ClientThreadSetupHelper that is hackilly now called in Init() from DllMain),
- code in User32CallClientThreadSetupFromKernel,
- add two flag manual resets in Init() and the forced call to ClientThreadSetupHelper,
- and moreover the whole CSR call in DllMain, that seems to sometimes cause some user32 internal global pointers to remain NULL where they should not (more specifically some "pdi" thing).

Obviously all these problems need to be understood (why some things do not become initialized when they should, etc...). See r65799, revert r65810, and CORE-8949.

svn path=/trunk/; revision=65811
2014-12-23 16:42:59 +00:00
Hermès Bélusca-Maïto
7385e6669c [USER32]: Add yet another magic hack to temporarily reenable bots (ofc. mention in the code that this is a hack). See r65799 for more details, and CORE-8949.
svn path=/trunk/; revision=65810
2014-12-23 14:31:28 +00:00
Amine Khaldi
df6ec77084 [TRANSLATIONS] Russian translation update by Kudratov Olimjon. CORE-8947
svn path=/trunk/; revision=65809
2014-12-23 11:25:42 +00:00
Amine Khaldi
9149e05f38 [BOOTDATA] Add some default settings for crash control to hivesys.inf. By Ricardo Hanke. CORE-8953
svn path=/trunk/; revision=65808
2014-12-23 11:01:17 +00:00
Amine Khaldi
9e80977c0d [SHDOCVW] Bring exports closer to native.
CORE-8936 CORE-8174

svn path=/trunk/; revision=65807
2014-12-23 10:53:07 +00:00
Amine Khaldi
252f1971de [SHLWAPI] Fix inverted StopWatch forwards. Accepted upstream. CORE-8954
svn path=/trunk/; revision=65806
2014-12-23 10:50:10 +00:00
David Quintana
c67d37f223 [EXPLORER]
* Fix count of visible buttons getting out of sync when removing buttons. Fixes empty space at the end of the notification toolbar.
CORE-8840 #resolve #comment This should be fixed as of r65805.

svn path=/trunk/; revision=65805
2014-12-23 01:55:48 +00:00
David Quintana
b11d90c85f [EXPLORER]
* Improve an older change that I commited by mistake, with the improvbements based on a patch by Giannis.
* In Windows, fixes the taskbar having a size grip with the taskbar is themed and locked.
* In ReactOS, the size grip never seems to disappear, contrary to Giannis' concerns in the issue.
* Because of the above, I decided to commit the changes, and let the sizing edge inconsistency be a followup to the issue.
CORE-6966 #resolve #comment A modified version of the patch was commited in r65804. Thanks.

svn path=/trunk/; revision=65804
2014-12-23 01:31:36 +00:00
David Quintana
d9a214e353 [EXPLORER]
* Handle WM_CONTEXTMENU in the notification area so it does not spread upwards to the taskbar window.
* In theory, only one of the two handlers would be necessary, and it is true when testing in Windows, but in ReactOS, the handler in CSysPagerWnd was not enough. This may be worth a look by the win32k experts to see if it's a bug, or Windows was correcting my error.
CORE-8870 #resolve #comment Should be fixed in r65803. Thanks for reporting.

svn path=/trunk/; revision=65803
2014-12-23 01:13:05 +00:00
Sylvain Petreolle
8222f8d654 [WHOAMI]
Fix warning into the russian file.

svn path=/trunk/; revision=65802
2014-12-22 23:44:25 +00:00
Pierre Schweitzer
cc116aa826 [FASTFAT]
So far, totally disable VPB swapout on dismount. It appears to have brought more issues than it actually solves.
A more accurate implementation will be required.

CORE-8928 #comment Can you please retry with r65801

svn path=/trunk/; revision=65801
2014-12-22 23:00:22 +00:00
Pierre Schweitzer
d34671697f [SHELL32]
Update French translation

svn path=/trunk/; revision=65800
2014-12-22 22:55:07 +00:00
Hermès Bélusca-Maïto
02a51a5dce In absence of patchbot, let's test patch directly on... trunk!! Yeah!! Let's break trunk! (or not, we'll see...)
[USER32][USERSRV][WIN32K]
- Flag CSRSS threads as such.
- Each time a win32 thread is "created" (or a win32k system call is done) a PsConvertToGuiThread call is done, that makes a Win32ThreadCallout which calls UserCreateThreadInfo. We should call back ClientThreadSetup to set client-side info.
- Introduce a ClientThreadSetupHelper function to try to understand what happens when doing direct calls to ClientThreadSetup and via win32k callbacks.
- Reenable CSR call in user32::DllMain but add shame hacks in Init(..) to force NtUserProcessConnect callbacks (yet they should not be done there): see the code comment associated for more details.
- Temporarily disable ClientThreadSetupHelper call in ClientThreadSetup because it makes things fail, like console input thread failing and so on...
- ... and in ClientThreadSetupHelper, some correct code is commented out because it currently breaks other things (like menu initialization etc...), and HACKS ARE ADDED!! (see especially the "if (gpsi)" one, that should not exist, but if removed we fail sometimes in MenuInit because gpsi becomes NULL for some reason, if some other code that makes redundant calls to NtUserProcessConnect, is uncommented).

To sum up I tried to scaffold the thing as it should be, but with disabled code to not break everything.

CORE-8949 #comment Revision 65799 committed the patch v1.

svn path=/trunk/; revision=65799
2014-12-22 21:23:00 +00:00
Hermès Bélusca-Maïto
4ccf6c6b75 [USERSRV]
- Reenable UserClientConnect callback, it's not the problematic code that made bots to fail at 3rd stage and caused r65716 to be committed.
- Put the system threads hack *after* having called NtUserInitialize (that really initializes user-kernel interface with win32k), and not before.

svn path=/trunk/; revision=65798
2014-12-22 19:50:00 +00:00
Hermès Bélusca-Maïto
61886223b4 [GDI32]
- Call NtGdiInit before initializing ourselves (ok, in ROS NtGdiInit does nothing interesting, but still do it to be call-compatible with win2k3 so everything initializes as it should).
- Do some cleanup on process detach.

svn path=/trunk/; revision=65797
2014-12-22 19:44:59 +00:00
Amine Khaldi
e1ad312568 [SNDREC32] Update Chinese (zh-CN) translation. By Henry Tang Ih. CORE-8933
svn path=/trunk/; revision=65796
2014-12-22 19:29:44 +00:00
Amine Khaldi
6ab6e74922 [TRANSLATIONS] Russian translation update by Kudratov Olimjon. CORE-8947
svn path=/trunk/; revision=65795
2014-12-22 19:10:42 +00:00
Amine Khaldi
028cf3af76 [NOTEPAD] Uzbek translation by Kudratov Olimjon. CORE-8948
svn path=/trunk/; revision=65794
2014-12-22 19:01:03 +00:00
Amine Khaldi
e9e0408e0a [MPLAY32] Fix some entries in the Chinese (zh-CN) translation. Spotted by Alexander Misel and fixed by Henry Tang Ih. CORE-8918
svn path=/trunk/; revision=65793
2014-12-22 18:52:25 +00:00
Amine Khaldi
55299d897c [SHELL32] Sync translations to the English one. Translators, you're on!
svn path=/trunk/; revision=65792
2014-12-22 18:48:47 +00:00
Amine Khaldi
4e00f10316 [SHELL32] Update Russian translation by Petr Akhlamov. CORE-8942
svn path=/trunk/; revision=65791
2014-12-22 18:38:27 +00:00
Hermès Bélusca-Maïto
e880206827 [WHOAMI]
- In German translation, replace erroneous \" to "" for putting quotes inside strings. Fixes resource compilation in GCC/MSVC.
- Make proper help string indentation in resource files. NOTE FOR TRANSLATORS: Please keep the identation correct!

svn path=/trunk/; revision=65790
2014-12-22 12:28:05 +00:00
Daniel Reimer
4dceaa107a [WHOAMI]
German translation

svn path=/trunk/; revision=65789
2014-12-22 11:40:58 +00:00
Pierre Schweitzer
6de4a7e051 [WHOAMI]
Fix invalid memory usage, memory leaks, partial zeroes, big if blocks, ...

Would be nice also to check all the allocations which are not checked yet

CORE-8533

svn path=/trunk/; revision=65788
2014-12-22 09:53:24 +00:00
Amine Khaldi
4d592a5c29 [WHOAMI] Add preliminary version of whoami utility by Ismael Ferreras Morezuelas (with some changes by me). CORE-8533
svn path=/trunk/; revision=65787
2014-12-21 23:10:46 +00:00
Amine Khaldi
b37505476c [TREE] Attempt to fix some style & formatting crimes. Improve header inclusions. CORE-8529
svn path=/trunk/; revision=65786
2014-12-21 18:48:33 +00:00
Amine Khaldi
9d80e094b4 [NTDLL_WINETEST] Properly enable back the LdrAddRefDll tests. CORE-8102
svn path=/trunk/; revision=65785
2014-12-21 18:00:03 +00:00
Amine Khaldi
048cc7d133 [NTDLL_WINETEST] Temporarily enable LdrAddRefDll tests in light of CORE-8102.
svn path=/trunk/; revision=65784
2014-12-21 17:16:15 +00:00
Pierre Schweitzer
b33aecdb8e [SHELL32]
Update French translation

svn path=/trunk/; revision=65783
2014-12-21 13:26:31 +00:00
Eric Kohl
baf567d896 [CMD]
Implement CTRL+Left (jump to previous word) and CRTL+Right (jump to next word) edit keys.

CORE-5626 #resolve

svn path=/trunk/; revision=65782
2014-12-21 12:36:24 +00:00
Pierre Schweitzer
7528b04c30 [MSPAINT]
Update French translation

svn path=/trunk/; revision=65781
2014-12-21 10:04:55 +00:00
Giannis Adamopoulos
80aefab1f2 [EXPLORER]
* Fix the fallback case when BCM_GETIDEALSIZE doesn't work.
* Take into account the size of the borders of the start button twice. Now the caption has enough space and doesn't hide part of the border and more importantly the button is vertically aligned to the tasks buttons.

svn path=/trunk/; revision=65780
2014-12-20 22:11:35 +00:00
Daniel Reimer
56dde36de0 [TRANSLATION]
Turkish Translation Update by Erdem Ersoy
CORE-7861 #resolve #comment Committed, thx for helping ^^

svn path=/trunk/; revision=65779
2014-12-20 22:02:26 +00:00
Eric Kohl
139d28e104 [USETUP]
Start implementing the recovery console: CLS, EXIT and HELP have been implemented. I also added a DUMPSECTOR command that enables us to dump disk sectors to the screen. For example "DUMPSECTOR 0 63" dumps disk 0 sector 63 to the screen.

svn path=/trunk/; revision=65778
2014-12-20 21:58:22 +00:00
Daniel Reimer
988ecb9a8c [TASKMGR]
Fix even some more translations to get this one fixed: CORE-5790
Sidenote: http://rammichael.com/resource-hacker-fx

svn path=/trunk/; revision=65777
2014-12-20 21:44:24 +00:00
Daniel Reimer
e753297287 [TASKMGR]
Fix some translations as preparation to get this one fixed: CORE-5790
At least most languages now look sort of nicely. Next: apply the patch and check the non ResHacker compatible languages

svn path=/trunk/; revision=65776
2014-12-20 20:51:54 +00:00
Giannis Adamopoulos
155eb2f79c [BROWSEUI]
* Forward focus to the defview window when the shell browser gets the focus.
* We can now navigate to the opened window with the keyboard right after it opens. That means that after opening from the desktop a window with the keyboard, we can navigate right away without any additional mouse clicks.

svn path=/trunk/; revision=65775
2014-12-20 20:32:32 +00:00
Daniel Reimer
2a420776e0 [BROWSEUI]
update Russian Translation by Akhlamov Petr
CORE-7981 #resolve #comment Committed, thx for help ^^

svn path=/trunk/; revision=65774
2014-12-20 19:31:44 +00:00
Daniel Reimer
004ad0567d [INF]
"No shortcut to the On Screen Keyboard in the start menu" by Jared
CORE-8883 #resolve #comment Committed with minor fix in German translation, thx for help.

svn path=/trunk/; revision=65773
2014-12-20 19:03:13 +00:00
David Quintana
a645e72e99 [BROWSEUI]
* Do not enable the CExplorerBand wrapper by default. Avoids crashing due to a stack overflow.
CORE-8930 #resolve #comment Oops. Fixed in r65772. Thanks.

svn path=/trunk/; revision=65772
2014-12-20 18:10:02 +00:00
Giannis Adamopoulos
0727e3b95a [SHELL32]
* Properly stub CheckStagingArea which is used by native explorer

svn path=/trunk/; revision=65771
2014-12-20 18:06:42 +00:00
Giannis Adamopoulos
710258ad83 [RPCSS]
* Create ScmCreatedEvent when we are done initializing.

svn path=/trunk/; revision=65770
2014-12-20 17:56:00 +00:00
David Quintana
cb546b4121 [RSHELL]
* Make the shell menus focus the parent before displaying themselves. Fixes keyboard focus when opening the start menu with the windows key.
NOTE: I put this in the focus manager for lack of a better place, but it may not be how Windows does it.

svn path=/trunk/; revision=65769
2014-12-20 17:45:45 +00:00
Pierre Schweitzer
2dc90d89b4 [EXPLORER]
Complete the French translation

svn path=/trunk/; revision=65768
2014-12-20 17:28:03 +00:00
Amine Khaldi
a3f14b038b [COMCTL32] Properly highlight r65766.
svn path=/trunk/; revision=65767
2014-12-20 16:55:10 +00:00
Giannis Adamopoulos
3b1abd64d6 [COMCTL32]
* Do not add two additional pixels at the top margin of the toolbar. This is the behaviour of comctl32 v6 and our explorer depends on that to appear properly. We don't have a proper solution for these differences in behavior and since we already opt to use the v6 behavior I think it is fine.

CORE-5483 #resolve #comment Committed a slightly different version of the patch, thanks.

svn path=/trunk/; revision=65766
2014-12-20 16:49:31 +00:00
David Quintana
ad76fad27f [SHELL32]
* Remove a leftover from when this file was C++.

CORE-8846 #resolve #comment Should be fixed in trunk r65765, thanks.

svn path=/trunk/; revision=65765
2014-12-20 16:47:35 +00:00
Pierre Schweitzer
53b722f8d7 [TREE]
- Fix tree internal name
- Add tree French translation

svn path=/trunk/; revision=65764
2014-12-20 16:41:23 +00:00
Pierre Schweitzer
0c35f7905b [TREE]
Convert resources strings to OEM before printing them on console.
Fixes broken displays with special chars

svn path=/trunk/; revision=65763
2014-12-20 16:40:57 +00:00
Amine Khaldi
b2b224b527 [PSDK] Define rpcndr.h DECLSPEC_UUID in consistency with the one in winnt.h. Fixes some redefinition warnings.
svn path=/trunk/; revision=65762
2014-12-20 16:26:03 +00:00
Amine Khaldi
b992e53d8e [RSHELL] Silence some MSVC linker warnings.
svn path=/trunk/; revision=65761
2014-12-20 16:24:21 +00:00
David Quintana
4c5970c6f2 [SHELL32] Mark the halfplementation as such.
CORE-3938

svn path=/trunk/; revision=65760
2014-12-20 16:22:43 +00:00
David Quintana
b6a4676eec [SHELL32]
* Halfplement IExtractIconAW support into the recycle bin. This is not fully correct as it always uses the fallback file icon, but it's better than nothing at all.

CORE-3938

svn path=/trunk/; revision=65759
2014-12-20 16:20:32 +00:00
David Quintana
4b7ab83f8d [NETSHELL]
* Move to shellext folder.
* Do not initialize the notification SSO, stobject will do so (like in Windows).
* Move some GUIDs to a shared header.

[STOBJECT]
* Initialize netshell's SSO the way Windows does it. Fixes network icon inconsistency.
* Move some GUIDs to a shared header.

CORE-8818 #resolve Fixed in trunk r65758.

svn path=/trunk/; revision=65758
2014-12-20 16:12:35 +00:00
David Quintana
a620535b0f [RSHELL]
* Make rshell.dll able to register its classes and support CoCreateInstance.

svn path=/trunk/; revision=65757
2014-12-20 16:04:45 +00:00
Amine Khaldi
b8416cd7f3 [BROWSEUI] Reorder some exports.
CORE-8936 CORE-8174

svn path=/trunk/; revision=65756
2014-12-20 15:16:18 +00:00
Amine Khaldi
c58a629e1f [SHELL32] Add export 007.. I mean 44. Mark some exports for inspection.
CORE-8936 CORE-8174

svn path=/trunk/; revision=65755
2014-12-20 15:10:45 +00:00
Amine Khaldi
ae3dc3b564 [SHLWAPI] Stub some exports. Stubplement SHGetAllAccessSA. Based on a patch by Giannis Adamopoulos.
CORE-8936 CORE-8174

svn path=/trunk/; revision=65754
2014-12-20 14:54:04 +00:00
Hermès Bélusca-Maïto
88116276ee [SERVICES]: Do not use GetSystemMetrics to retrieve SafeBoot option value, but instead use directly the registry (as it is done just after...).
svn path=/trunk/; revision=65753
2014-12-20 03:12:23 +00:00
Giannis Adamopoulos
9693cd1f07 [UXTHEME]
* Implement a few functions needed by windows themeui.dll

svn path=/trunk/; revision=65752
2014-12-19 14:21:18 +00:00
Amine Khaldi
2acbdc453c [UXTHEME] Remove some exports that do not exist in native. Reorder some exports. Add some missing exports. Mark OpenThemeDataEx as noname.
CORE-8174

svn path=/trunk/; revision=65751
2014-12-19 14:00:09 +00:00
Amine Khaldi
736374efcd [SHLWAPI_WINETEST] Addendum to r65749.
CORE-7556

svn path=/trunk/; revision=65750
2014-12-19 13:22:15 +00:00
Amine Khaldi
cfcca647bc [SHLWAPI] Import Wine commit 4b33a33 by Sebastian Lackner: Add implementation for StrCatChainW. Based on a patch by Huw Campbell.
CORE-7556

svn path=/trunk/; revision=65749
2014-12-19 13:20:42 +00:00
Timo Kreuzer
58d4218202 [WIN32K]
Handle coordinate translation in NtGdiOffsetClipRgn

svn path=/trunk/; revision=65748
2014-12-19 12:53:50 +00:00
Timo Kreuzer
9959f71bba [WIN32K]
Dump object event log, when trying to dereference an object with 0 references.

svn path=/trunk/; revision=65747
2014-12-19 11:12:40 +00:00
Timo Kreuzer
b2a9ab7151 [WIN32K]
Rename RGNOBJAPI_Lock to REGION_LockRgn and remove the 2nd argument, rename RGNOBJAPI_Unlock to REGION_UnlockRgn, remove the old inline lock/unlock functions. Do proper locking using GDIOBJ_bLockMultipleObjects in NtGdiEqualRgn.

svn path=/trunk/; revision=65746
2014-12-19 10:34:52 +00:00
Timo Kreuzer
fc5dd61639 [WIN32K]
Make sure to respect GDI object lock order in (Nt)UserScrollDC

svn path=/trunk/; revision=65745
2014-12-19 09:26:50 +00:00
James Tabor
b037edeae8 [Win32k]
- Crash is due to receiving an APC for the current sending thread. Prematurely freeing the data block and while the receiving thread did not have a chance to process it. Interception and calling back to user mode will allow thread to go away. What about the memory block, is it still allocated? A cleaver Hack can fix this, but still the application crashed leaving issues and trash laying about. See CORE-8779.

Reference:
http://msdn.microsoft.com/en-us/library/windows/hardware/ff565592(v=vs.85).aspx
"Yes, for thread termination. No, for user APCs."

svn path=/trunk/; revision=65744
2014-12-18 23:45:11 +00:00
James Tabor
9bc240e832 - Fix a crash while moving minimized MDI window in ConTEXT.
svn path=/trunk/; revision=65743
2014-12-18 22:38:40 +00:00
Giannis Adamopoulos
a138064724 [RSHELL]
* Implement using a thin border for the start menu when themes are enabled
CORE-8925

svn path=/trunk/; revision=65742
2014-12-18 18:24:01 +00:00
Pierre Schweitzer
2de386a06c [BOOTDATA]
Add the NtfsMftZoneReservation registry key on installation

See http://support.microsoft.com/kb/174619 for more information

svn path=/trunk/; revision=65741
2014-12-18 18:15:15 +00:00
David Quintana
d73c38b69c [RSHELL]
* Fix the focus manager to properly close the shell menus when clicking outside the menu area.
* Close the shell menus when activating a context menu action.
* Open the shell menus without activating. Fixes titlebar color changing to inactive for the Favorites menu.

[RSHELL]
[SHELL32]
[BROWSEUI]
* Remove a few DbgPrints and downgrade some others into TRACEs.

CORE-8836 #resolve

svn path=/trunk/; revision=65740
2014-12-18 17:34:46 +00:00
Timo Kreuzer
217eef81d8 [GDI32]
- Rename SetRectRgnEx to IntSetRectRgn and make it usermode only
- Implement IntSetNullRgn
- Improve SetRectRgn code and enable the usermode part

svn path=/trunk/; revision=65739
2014-12-18 08:13:14 +00:00
Timo Kreuzer
f3f9526d93 [GDI32]
Rewrite CombineRgn, enabling full handling in usermode if the resulting region is either a rectangular or a NULL region.

svn path=/trunk/; revision=65738
2014-12-18 08:13:10 +00:00
Timo Kreuzer
383e40f59f [WIN32K]
Fix REGION_vSyncRegion and RGNOBJAPI_Unlock to actually make sense

svn path=/trunk/; revision=65737
2014-12-18 08:13:06 +00:00
Timo Kreuzer
dd9435905a [USER32]
Fix copy-paste-bug in SubtractRect

svn path=/trunk/; revision=65736
2014-12-18 08:13:01 +00:00
Timo Kreuzer
54f66b4232 [WIN32K]
- Rename xmemcheck to REGION_bGrowBufferSize
- Implement REGION_bEnsureBufferSize and REGION_vAddRect helper functions
- Replace MERGERECT macro with REGION_bMergeRect inline function

svn path=/trunk/; revision=65735
2014-12-18 08:12:55 +00:00
Timo Kreuzer
542d41ba8b [WIN32K]
Improve REGION_bMakeFrameRegion and REGION_bMakeSimpleFrameRgn

svn path=/trunk/; revision=65734
2014-12-18 08:12:51 +00:00
Timo Kreuzer
fe261bd6e2 [WIN32K]
- Make REGION_iOffsetRgn check the region for coordinate space overflow and fail, if the region cannot be moved
- Rename REGION_iOffsetRgn to REGION_bOffsetRgn and make it return BOOL instead of the complexity, since the majority of callers are not interested in the complexity. It's also more obvious that we need to check for an error.

svn path=/trunk/; revision=65733
2014-12-18 08:12:41 +00:00
Timo Kreuzer
beff5fdc06 [WIN32K]
- Rename IntGdiOffsetRgn to REGION_iOffsetRgn

svn path=/trunk/; revision=65732
2014-12-18 08:12:34 +00:00
Timo Kreuzer
72bceaffc2 [WIN32K]
Implement exclusive lock order checks for GDI objects in debug builds

svn path=/trunk/; revision=65731
2014-12-18 08:12:28 +00:00
Timo Kreuzer
c6f684e727 [WIN32K]
- Rewrite NtGdiFillRgn and IntGdiPaintRgn
We now properly support painting regions on DCs with arbitrary world transforms, with pattern brushes and we respect the foreground ROP and mode of the DC. And we don't run into deadlocks due to having an exclusive region lock while trying to lock a DC. LOCKING MUST BE DONE IN PROPER ORDER!

svn path=/trunk/; revision=65730
2014-12-18 08:12:23 +00:00
Timo Kreuzer
c3d2353ed6 [WIN32K]
Properly implement EngPaint, calling IntEngBitBlt, instead of doing a manual single color fill.

svn path=/trunk/; revision=65729
2014-12-18 08:12:19 +00:00
Timo Kreuzer
9697fb6e1e [WIN32K]
- Implement REGION_bXformRgn
- Move IntGdiPaintRgn ro bitblt.c

svn path=/trunk/; revision=65728
2014-12-18 08:12:06 +00:00
Timo Kreuzer
095f2182e8 [WIN32K]
- Move IntGdiReleaseRaoRgn and IntGdiReleaseVisRgn to cliprgn.c
- Remove unused IntUpdateVisRectRgn

svn path=/trunk/; revision=65727
2014-12-18 08:12:01 +00:00
Timo Kreuzer
e6d7e74e6a [WIN32K]
- Rename IntSetPolyPolygonRgn to REGION_SetPolyPolygonRgn
- Implement GreCreatePolyPolygonRgn wrapper around it
- Fix iMode usage in NtGdiPolyPolyDraw
- Improve some variable naming

svn path=/trunk/; revision=65726
2014-12-18 08:11:56 +00:00
Timo Kreuzer
a969022b08 [WIN32K]
Rework GreCreateFrameRgn to return the new region. Implement the internal function REGION_bMakeFrameRegion doing the actual work. Fix frame calculation by moving the source region diagonal instead of only horizontal and vertical, use IntGdiOffsetRgn instead of manually fiddling with the rectangles.

svn path=/trunk/; revision=65725
2014-12-18 08:11:50 +00:00
Timo Kreuzer
620c12a295 [WIN32K]
- Move NtGdiFillRgn and NtGdiFrameRgn to bitblt.c
- Remove unused NtGdiUnionRectWithRgn
- Rename REGION_CreateFrameRgn to GreCreateFrameRgn

svn path=/trunk/; revision=65724
2014-12-18 08:11:42 +00:00
Timo Kreuzer
87c12612dc [WIN32K]
Move NtGdiInvertRgn to bitblt.c

svn path=/trunk/; revision=65723
2014-12-18 08:11:36 +00:00
Timo Kreuzer
163de23b57 [WIN32K]
- Remove useless offset part in REGION_CropAndOffsetRegion

svn path=/trunk/; revision=65722
2014-12-18 08:11:31 +00:00
Timo Kreuzer
4fa10c7ef9 [WIN32K]
Fix MSVC warnings

svn path=/trunk/; revision=65721
2014-12-18 08:11:25 +00:00
Timo Kreuzer
2768e3abbd [WIN32K]
More improvements to region.c:
- PROSRGNDATA -> REGION, void -> VOID, int -> INT, uppercase struct names
- do not put assignments into if statements
- !x -> x == NULL for pointers
- Add additional parentheses / curly braces
- rename RGN_ATTR::Flags to iComplexity

svn path=/trunk/; revision=65720
2014-12-18 08:11:19 +00:00
Timo Kreuzer
1a37b7cfb8 [WIN32K/FORMATTING]
- Tabs -> spaces
- Fix indentation
- Improve comment formating
- No code change

svn path=/trunk/; revision=65719
2014-12-18 08:11:13 +00:00
Timo Kreuzer
0d02208b99 [GDI32]
Avoid casting RECT and POINT to RECTL and POINTL by adding a define

svn path=/trunk/; revision=65718
2014-12-18 08:11:09 +00:00
Timo Kreuzer
ab81b74bb4 [GDI32]
Implement GdiGetRgnAttr

svn path=/trunk/; revision=65717
2014-12-18 08:11:04 +00:00
Hermès Bélusca-Maïto
f9b8d7214f [USER32][USERSRV]
Temporarily disable UserClientConnect (in server side) and CSR client to server call (in client side), always set gfServerProcess to FALSE (that is normally almost true but when CSR itself does USER32 operations...), and comment again GetConnect() call in ClientThreadSetup, in an attempt to "fix" 3rd stage for bots (so that we don't assert in DesktopPtrToUser because some pdi is NULL...)

svn path=/trunk/; revision=65716
2014-12-18 01:53:08 +00:00
Hermès Bélusca-Maïto
e157eb4929 [CONSRV]: Explicitely use UNICODE SetWindowText API.
svn path=/trunk/; revision=65715
2014-12-18 01:35:55 +00:00
Hermès Bélusca-Maïto
c6fccde6d2 [WIN32K]
- Code formatting for NtUserProcessConnect.
[USER32]
- Hack a call to GetConnected in ClientThreadSetup in an attempt to temporarily "fix" a bug that makes the bots fail. Now we really need to fix user32 init!

svn path=/trunk/; revision=65714
2014-12-18 00:30:27 +00:00
James Tabor
5b624b75db [NtUser]
- Cleanup status and update header.

svn path=/trunk/; revision=65713
2014-12-18 00:19:33 +00:00
Hermès Bélusca-Maïto
effa3a4d24 [USERSRV]
- Set the process creation notify routine for BASE that needs to be called when a process is created.
Patch by Timo, see CORE-7505.

[BASESRV]
- Implement BaseSetProcessCreateNotify that just saves internally the notification function to be called when a process is created.
- Call the notification function where it should be.

CORE-7505

svn path=/trunk/; revision=65712
2014-12-17 23:03:36 +00:00
Hermès Bélusca-Maïto
ae2e894b80 [USERSRV]: usersrv needs static-link to basesrv because it'll use an API in the next commit :p (hint: process creation notification). For Timo's patch CORE-7505
svn path=/trunk/; revision=65711
2014-12-17 22:34:13 +00:00
Hermès Bélusca-Maïto
672f036f93 [HEADERS]
- Play around and declare USERSRV_API_CONNECTINFO (CSR-style-name connect info structure type) as an alias to USERCONNECT (win32k-style-name) structure that is used to perform... "connections" between user32 and winsrv/win32k subsystem.

[WIN32K]
- Make UserThreadCsrApiPort case of NtUserSetInformationThread return success to make usersrv happy (while saving CSR port handle in win32k is still not implemented).

[USER32]
- Clean up "a bit" DllMain, call CsrClientConnectToServer to connect to usersrv (copy-paste of what we do in kernel32 for base and console connection) and now determine properly whether we are doing server-to-server calls (i.e. properly set gfServerProcess).
- Reorganize GdiDllInitialize calls and put them all to the end of DllMain instead.
- No need to support DLL_THREAD_ATTACH/DETACH so call the magic DisableThreadLibraryCalls function.

[USERSRV]
- Implement UserClientConnect with the patch of Timo CORE-7505: it gives a CSR port handle to win32k (if not already done), then do process connection.

CORE-7505

svn path=/trunk/; revision=65710
2014-12-17 22:22:05 +00:00
Hermès Bélusca-Maïto
6268701e22 [KERNEL32]: Minor code formatting.
svn path=/trunk/; revision=65709
2014-12-17 22:07:41 +00:00
Hermès Bélusca-Maïto
2abc02f9c7 Delete unuseful file...
svn path=/trunk/; revision=65708
2014-12-17 22:06:36 +00:00
Daniel Reimer
42b68bba90 [SHELL32]
German translation update

svn path=/trunk/; revision=65707
2014-12-17 21:09:30 +00:00
Amine Khaldi
eb0152b771 [USRMGR] Italian translation update by Nicolò Altamura. CORE-8857
svn path=/trunk/; revision=65706
2014-12-17 17:59:02 +00:00
Amine Khaldi
041fb54b3e [MPLAY32] Update Chinese (zh-CN) translation. By Henry Tang Ih.
CORE-8918

svn path=/trunk/; revision=65705
2014-12-17 17:51:10 +00:00
Amine Khaldi
e6d6e86150 [SYSDM] Minor changes to the Startup and Recovery options dialog resource. Brought to you by Ricardo Hanke.
CORE-8924

svn path=/trunk/; revision=65704
2014-12-17 17:47:54 +00:00
Giannis Adamopoulos
59dee0fd6f [EXPLORER]
* Remove internal IStartMenuSite interface that didn't serve any purpose.
* Stop using global instances of some core classes.

svn path=/trunk/; revision=65703
2014-12-17 12:44:58 +00:00
Giannis Adamopoulos
2d5024bcae [RSHELL]
* Disable themes for the toolbars used for shell menus
* See issue CORE-8922 for details

svn path=/trunk/; revision=65702
2014-12-17 12:38:19 +00:00
Giannis Adamopoulos
f8294a310a [RSHELL]
- Remove definition for an undocumented function that already exists in our headers
- See issue CORE-8920

svn path=/trunk/; revision=65701
2014-12-17 12:28:35 +00:00
Giannis Adamopoulos
fadad0db13 [RSHELL]
- Simplify some code by using shlwapi helpers
- See issue CORE-8919

svn path=/trunk/; revision=65700
2014-12-17 12:11:31 +00:00
Giannis Adamopoulos
3f135b5ac6 Try to fix build
svn path=/trunk/; revision=65699
2014-12-17 11:46:19 +00:00
Giannis Adamopoulos
cfac63ea85 [BROWSEUI]
* Simplify a lot of methods my using helpers from shlwapi.
* Remove declarations for undocumented functions that are already declared in our headers.
* Move definitions of IID_IAugmentedShellFolder and CLSID_MergedFolder to our headers.
* Remove definitions of functions that are already implemented in shlwapi.
* Add CreateMergedFolder and CreateMenuBand functions in precomp.h in order to simplify creating these objects when using rshell.

svn path=/trunk/; revision=65698
2014-12-17 11:35:07 +00:00
David Quintana
4c893c3d59 [SEHLL32]
* Implement handling of file associations marked as "NoOpen". Patch by Lee Schroeder, with a few tweaks.
CORE-8855 #resolve #comment Commited in trunk r65697. Thanks.

svn path=/trunk/; revision=65697
2014-12-17 00:46:30 +00:00
Hermès Bélusca-Maïto
5b22f2c5c3 [WIN32K]
- Simplify NtUserInitialize: we can check whether gpepCSRSS is != NULL to see if we are initialized or not (instead of using gbInitialized).
- The UserInitialize helper doesn't need to take parameters. The two event handles (power and media, used when we receive a power event -- for sleep, etc... -- and a media event -- like USB key insertion and such --) just need to be used in the not-yet-implemented "Initialize Power Request List" and "Initialize Media Change" steps.
- Something that should be done is to bugcheck if the USER version reported is != 5.0 (as windows does).

[WINSRV]
- Collapse common inclusions from usersrv and consrv into the common header winsrv.h.

[USERSRV]
- _UserSoundSentry is NTAPI
- Stub UserClientConnect (Timo's patch contains more involved code. I will commit it later).
- Our NtUserInitialize(0, NULL, NULL); call (that made Windows BSOD) is wrong. It should be done with its first parameter correctly set to the USER version (5.0) and the two other parameters are handles to power and media events (see above). We should create them before.
This is part of patch by Timo Kreuzer.
CORE-7505 #comment UserClientConnect stubbed (it should be better implemented, I will commit the code from the patch later on); power&media events initialized; NtUserInitialize corrected.

svn path=/trunk/; revision=65696
2014-12-17 00:33:40 +00:00
David Quintana
09bdb1f5ce [SHELL32]
* Revert r65589, since it breaks tray icons.

svn path=/trunk/; revision=65695
2014-12-17 00:32:34 +00:00
Hermès Bélusca-Maïto
06c09f7300 [WIN32K]: Some code formatting in csr.c before revampering it.
svn path=/trunk/; revision=65694
2014-12-17 00:17:44 +00:00
Hermès Bélusca-Maïto
423dd92dbd [WIN32K]
Stubplement NtUserQueryInformationThread and NtUserSetInformationThread that will be used for:
- shutdown support: CORE-8322
- communicating a CSR Port handle to win32k: CORE-7505
CORE-7505 CORE-8322

svn path=/trunk/; revision=65693
2014-12-16 23:09:29 +00:00
Hermès Bélusca-Maïto
77b8d17482 ... And as a result of the previous commit, finally get rid of the "deprecated" directory!
svn path=/trunk/; revision=65692
2014-12-16 21:59:50 +00:00
Hermès Bélusca-Maïto
2b315b5802 [WIN32SS]: Push back csr code into win32k (not compiled yet). The thing is that win32k uses a LPC port to communicate with winsrv.dll . But it's winsrv.dll that gives a handle of the CSR port to win32k via a call to NtUserSetInformationThread with the UserThreadCsrApiPort information class. See part of Timo's patch in CORE-7505 that will be submitted later on. Also I need to somewhat stub the UserThreadCsrApiPort info class in NtUserSetInformationThread :)
svn path=/trunk/; revision=65691
2014-12-16 21:58:18 +00:00
Hermès Bélusca-Maïto
c8b67f57b6 [KERNEL32][BASESRV]
On Windows 2k3, BASESRV_API_CONNECTINFO went under a slimming treatment and now is only 4 bytes. In fact all its information was already existing in the static base data structure (BaseStaticServerData). We should now be more 2k3-compatible :)
Fix also the testbots.

svn path=/trunk/; revision=65690
2014-12-16 21:48:23 +00:00
Timo Kreuzer
4894f79a03 [SPEC2DEF]
Improve error output

svn path=/trunk/; revision=65689
2014-12-16 21:21:14 +00:00
Timo Kreuzer
ec7ca046bc [NTOSKRNL]
Hey Arch, using uninitialized variables is bad, mkay?

svn path=/trunk/; revision=65688
2014-12-16 21:15:57 +00:00
Timo Kreuzer
0d1a5d0f19 [EVENTVWR]
Fix MSVC build and x64 warnings

svn path=/trunk/; revision=65687
2014-12-16 21:03:24 +00:00
Hermès Bélusca-Maïto
5007c54522 [BASESRV]: Use BaseSrvCleanupVDMResources taking a CSR_PROCESS structure instead of just its PID to be able to possibly use more things to do VDM cleanup (in the future).
svn path=/trunk/; revision=65686
2014-12-16 20:28:44 +00:00
Hermès Bélusca-Maïto
52ac8586cf [BASESRV]: basesrv exports few APIs used in winsrv, so declare basesrv as IMPORTLIB.
svn path=/trunk/; revision=65685
2014-12-16 20:26:02 +00:00
Hermès Bélusca-Maïto
a4333d20f7 [BASESRV]
- Introduce BaseClientConnectRoutine and BaseClientDisconnectRoutine functions that do basesrv (de)initialization, and BaseSrvNlsConnect that may potentially init further NLS support in the future.
- BaseSrvDebugProcess is deprecated in Windows 2k3+.
- Few whitespace fixes.
Piece of patch by Timo Kreuzer.
CORE-7505 #comment Basesrv (dis)connect routines committed in r65684.

svn path=/trunk/; revision=65684
2014-12-16 20:15:35 +00:00
David Quintana
db53788957 [SHELL32]
* Use PrivateExtractIconsW instead of PrivateExtractIconExW to obtain the icons for caching. Fixes small shell icons using large icons scaled down instead of the proper 16px icons. Patch by Ismael Ferreras Morezuelas (swyter).
CORE-8404 #resolve #comment Commited in r65683. Thanks.

svn path=/trunk/; revision=65683
2014-12-16 18:21:48 +00:00
Hermès Bélusca-Maïto
8ebed423a8 [CSR]
- Cleanup a bit csrmsg.h (by me), the ObjectDirectory member of the CSR_API_CONNECTINFO structure becomes unused starting Windows 2k3 (add an informative comment about that fact).
- Remove now unneeded ObjectDirectory duplication code (by Timo).
- Fix some whitespace.
CORE-7505 #comment ObjectDirectory duplication code removed in r65682.

svn path=/trunk/; revision=65682
2014-12-15 23:35:32 +00:00
Hermès Bélusca-Maïto
d63ba99439 [BASESRV]
- Whitespace fixes.
- Stub AppCompat module.
Patch by Timo Kreuzer.
CORE-7505 #comment AppCompat committed in r65681.

svn path=/trunk/; revision=65681
2014-12-15 22:48:38 +00:00
Pierre Schweitzer
5fd0b10a9d [NTFS]
Return the MFT index in FileFullDirectoryInformation and NtfsGetBothDirectoryInformation queries

svn path=/trunk/; revision=65680
2014-12-15 21:44:52 +00:00
Pierre Schweitzer
e032664c6c [NTFS]
- Store the link count in FCB and return it in FileStandardInformation query
- Return the MFT index in NtfsGetInternalInformation query 

svn path=/trunk/; revision=65679
2014-12-15 21:28:06 +00:00
Hermès Bélusca-Maïto
ef4abbbb64 [MSGINA]: Update the function names of stubs, with (in comments) the number of parameters they take.
See CORE-8459 for more information.
CORE-8459 #resolve #comment Fixed in r65678.

svn path=/trunk/; revision=65678
2014-12-15 21:07:23 +00:00
Hermès Bélusca-Maïto
a55958d1b1 [TASKMGR]: Disable the "End task" button if no item is selected.
Part 2 of a patch by Edijs.
CORE-5655 #comment Patch committed. When one of you will have a patch for the Windows-menu items disabled bug, please reopen the report. #resolve

svn path=/trunk/; revision=65677
2014-12-15 20:45:38 +00:00
Hermès Bélusca-Maïto
0e707a8c26 [TASKMGR]: Disable the "End process" button if no item is selected.
Part 1 of a patch by Edijs.
CORE-5655 #comment procpage.c fix committed.

svn path=/trunk/; revision=65676
2014-12-15 20:33:26 +00:00
Hermès Bélusca-Maïto
55e82d6d2b [TREE]
- Use #pragma once in resource.h
- put windows.h after CRT includes.
- Convert the main .rc back to ANSI otherwise rc.exe complains, see http://stackoverflow.com/questions/15244065/error-rc2135-in-c-project-due-to-utf-8-encoding-of-rc-file for more details.

svn path=/trunk/; revision=65675
2014-12-15 20:17:17 +00:00
James Tabor
c181d8e316 - Fix build.
svn path=/trunk/; revision=65674
2014-12-15 01:41:57 +00:00
James Tabor
225783c294 - Fix build.
svn path=/trunk/; revision=65673
2014-12-15 01:40:58 +00:00
James Tabor
8cda920638 [NtUser]
- Finaly fix CORE-6129 leaving CORE-6651 to fix.

svn path=/trunk/; revision=65672
2014-12-15 01:38:27 +00:00
Daniel Reimer
13c3cc0240 [RAPPS]
Extend Turkish translation for rapps database by Erdem Ersoy
CORE-8874 #resolve #comment Committed, thx for help.

svn path=/trunk/; revision=65671
2014-12-15 01:01:58 +00:00
Daniel Reimer
36a607c8b8 [SYSDM]
Fix some misaligned button and text fields.
CORE-7338 #resolve #comment Should be fixed.

svn path=/trunk/; revision=65670
2014-12-15 01:00:07 +00:00
Daniel Reimer
e24917b475 [RAPPS]
rosapps maintenance of Romanian parts by Ștefan Fulea
CORE-8520 #resolve #comment Committed, thx for help.

svn path=/trunk/; revision=65669
2014-12-15 00:23:41 +00:00
Daniel Reimer
57d0c2a98d [TRANSLATION]
Turkish Translation Update by Erdem Ersoy
CORE-7861 #resolve #comment Committed, thx for help.

svn path=/trunk/; revision=65668
2014-12-15 00:12:56 +00:00
Daniel Reimer
223bc9c336 [USER32]
TRANSLATION: Ukrainian translation update for User32 by Yaroslav Fedoryako
CORE-8596 #resolve #comment Committed. Thx for help.

svn path=/trunk/; revision=65667
2014-12-14 23:58:12 +00:00
Daniel Reimer
32861c20d3 [INPUT]
TRANSLATION: Ukrainian translation update for input.dll by Yaroslav Fedoryako
CORE-8616 #resolve #comment Committed. Thx for help.

svn path=/trunk/; revision=65666
2014-12-14 23:57:11 +00:00
Daniel Reimer
e8d986a554 [USRMGR]
Italian translation of user accounts (control panel) by nicoalta01 (Marco Maria Emanuele Bartucci as I hope his name is)
While I was at it... convert the rest to UTF8
CORE-8857 #resolve #comment Committed, thx for help.

svn path=/trunk/; revision=65665
2014-12-14 23:52:49 +00:00
Daniel Reimer
ec4cc1a38b [URLMON]
TRANSLATION: Czech translation update
CORE-8499 #comment INF is UCS2 LE now and the Lang ID is corrected. Can you confirm that this is fixed now?

svn path=/trunk/; revision=65663
2014-12-14 23:38:05 +00:00
Hermès Bélusca-Maïto
9f24fbfec9 Partial merge of condrv_restructure branch r65657.
svn path=/trunk/; revision=65660
2014-12-14 22:57:49 +00:00
Daniel Reimer
0b132a9e1e [SHELL32]
Update German translation by Robert Naumann
CORE-8912 #resolve #comment Committed Thx for help.

svn path=/trunk/; revision=65659
2014-12-14 22:56:10 +00:00
Daniel Reimer
b812120a00 [BROWSEUI]
Update German translation by Robert Naumann
CORE-8913 #resolve #comment Committed Thx for help.

svn path=/trunk/; revision=65658
2014-12-14 22:55:08 +00:00
Hermès Bélusca-Maïto
83c026ccfe Sync with trunk r65656.
svn path=/branches/condrv_restructure/; revision=65657
2014-12-14 22:41:19 +00:00
Ziliang Guo
af188cf2f8 [DESK.CPL]
Check for the correct registry value for the wallpaper. Patch by Ricardo Hanke.
CORE-8796

svn path=/trunk/; revision=65656
2014-12-14 22:38:45 +00:00
Hermès Bélusca-Maïto
d7e4510259 [CONSRV]
- Fix info header.
- Add a VDMBuffer check.

svn path=/branches/condrv_restructure/; revision=65655
2014-12-14 22:19:05 +00:00
Hermès Bélusca-Maïto
1fa498439b [MSPAINT]: Remove trailing whitespace.
svn path=/trunk/; revision=65654
2014-12-14 21:56:21 +00:00
Hermès Bélusca-Maïto
15f101905a [CONSRV]: Rename context members with a more explicit name (code "style" only).
svn path=/branches/condrv_restructure/; revision=65653
2014-12-14 21:51:32 +00:00
Pierre Schweitzer
5a3af281d7 [NTFS]
- Implement NtfsGrabFCBFromTableById() and NtfsGetFCBForFileById(). These two are responsible for opening and retrieving a file open by ID.
- Modified NtfsMakeFCBFromDirEntry() so that it supports openings by ID which come with less information than normal openings.
- Modified NtfsGrabFCBFromTable() so that it doesn't return a FCB which would have been opened by ID.
- Modified NtfsOpenFile() so that it allows opening a file by ID using the two FCB helpers functions defined upper.
- Modified NtfsCreateFile() so that it can validate input in case of opening by ID.

To make it short, all this implements file opening by ID in NTFS driver. I made the choice to separate FCB which are coming from "normal" opening and these from ID opening.
The reason is that a file opening with ID has less information than a normal opening, and may fail on these information retreival. This is due to the fact that if opening by ID can virtual open all the files, because it ignores authorizations, traverses checks, in the end for retrieving the information, such checks can be done and fail.

I also left all this disabled so far, because it appears to regress NFI. I will investigate this.

CORE-8725

svn path=/trunk/; revision=65652
2014-12-14 21:18:47 +00:00
Hermès Bélusca-Maïto
0187ba2a21 [CONSRV]: More code cleaning.
svn path=/branches/condrv_restructure/; revision=65651
2014-12-14 21:18:40 +00:00
Pierre Schweitzer
6cea3c4018 [NTFS]
Make the NTFS driver more verbose in file information requests

svn path=/trunk/; revision=65650
2014-12-14 21:09:29 +00:00
Hermès Bélusca-Maïto
715013f96b [CONSRV]: Move ConioDrawConsole to where it should belong.
svn path=/branches/condrv_restructure/; revision=65649
2014-12-14 19:01:52 +00:00
Daniel Reimer
ca068b28b6 [TREE]
German translation for tree utility.

svn path=/trunk/; revision=65648
2014-12-14 18:58:51 +00:00
Ziliang Guo
71ef2b4cc4 [SETUP]
Add registry value for wallpaper directory. Patch by Ricardo Hanke.
CORE-8797

svn path=/trunk/; revision=65647
2014-12-14 18:39:24 +00:00
Ziliang Guo
c030203e6a [TREE]
Cleanup of Tree utility by Lee Schroeder.
CORE-8908

svn path=/trunk/; revision=65646
2014-12-14 18:30:14 +00:00
Pierre Schweitzer
ecb8f375f8 [NTFS]
Implement GetVolumeBitmap().

This allows NFI to find which file is at which LCN: http://www.heisspiter.net/~Pierre/rostests/NTFS_NFI_LCN.png

So far, NFI is not as verbose as it is on Windows in such cases, because FILE_OPEN_BY_FILE_ID is *still* unimplemented (you should consider implementing it Pierre ;-)).
I checked with Windows, the correct file is found though!

CORE-8725

svn path=/trunk/; revision=65645
2014-12-14 18:13:57 +00:00
Hermès Bélusca-Maïto
6ba8a926da [CONSRV]: Add PCONSRV_CONSOLE --> PCONSOLE casts (needed *on purpose*).
svn path=/branches/condrv_restructure/; revision=65644
2014-12-14 18:05:50 +00:00
Hermès Bélusca-Maïto
4bc1529cfa [CONSRV]: Move all references to VDM screenbuffers from condrv back to consrv (only ConDrvWriteConsoleOutputVDM remains in condrv for now...)
svn path=/branches/condrv_restructure/; revision=65643
2014-12-14 17:30:38 +00:00
Hermès Bélusca-Maïto
6dcdba6692 [CONDRV]: Code reshuffling only.
svn path=/branches/condrv_restructure/; revision=65642
2014-12-14 17:02:39 +00:00
Hermès Bélusca-Maïto
37d3115479 [SACDRV]: Code formatting.
svn path=/trunk/; revision=65641
2014-12-14 16:54:14 +00:00
Hermès Bélusca-Maïto
f995f5fef8 [CONSRV]: Use an optional parameter for passing things to the "line discipline" functions.
svn path=/branches/condrv_restructure/; revision=65640
2014-12-14 16:53:47 +00:00
Pierre Schweitzer
e4e3241286 [NTFS]
- In the VCB, directly store the total number of clusters available in the volume, this will save a few recurrent divisions
- Use this everywhere it is possible
- Validate input in GetVolumeBitmap(): make sure we don't want bitmap beyond end of the volume

CORE-8725

svn path=/trunk/; revision=65639
2014-12-14 14:38:44 +00:00
Pierre Schweitzer
c16d33beae [NTFS]
- Implement NtfsGetUserBuffer() that will (attempt to) return the user output buffer for METHOD_NEITHER IOCTL.
- Implement parameters checking GetVolumeBitmap()

CORE-8725 

svn path=/trunk/; revision=65638
2014-12-14 12:24:18 +00:00
Hermès Bélusca-Maïto
508364d0b2 [COMP]: Minor code style changes + whitespace fixes.
svn path=/trunk/; revision=65637
2014-12-14 12:04:45 +00:00
Pierre Schweitzer
71ca9839a4 [NTFS]
Stub FSCTL_GET_VOLUME_BITMAP which is required by NFI.

CORE-8725

svn path=/trunk/; revision=65636
2014-12-14 10:54:20 +00:00
Cameron Gutman
2021ab5899 [CDFS]
- Fix CD-ROM disc change handling
- Fixes CORE-6119

svn path=/trunk/; revision=65635
2014-12-14 09:27:11 +00:00
Pierre Schweitzer
5d774268db [CALC]
Apply r65633 to all the language files.

CORE-7746

svn path=/trunk/; revision=65634
2014-12-14 09:18:47 +00:00
Ziliang Guo
f15a2f9255 [CALC]
Switch calc to using the registry for storing configuration values. Remove 9x codepath. Patch by Lee Schroeder. Cleaning up Ziliang Guo.
CORE-7746

svn path=/trunk/; revision=65633
2014-12-14 05:48:05 +00:00
Ziliang Guo
b9312f9bb6 [TREE]
Fix build.

svn path=/trunk/; revision=65632
2014-12-14 00:09:51 +00:00
Ziliang Guo
85260e1fa7 [TREE]
Implement directory tree commandline utility. Code by Asif Bahrainwala. Cleanup by Ziliang Guo.
CORE-8529

svn path=/trunk/; revision=65631
2014-12-14 00:00:54 +00:00
Eric Kohl
38b680f392 [EVENTVWR]
Clean up the resource IDs.
Fix small icon loading.

svn path=/trunk/; revision=65630
2014-12-13 22:35:48 +00:00
Ziliang Guo
bf0ce0bccc [COMP]
Incorporate fixes provided by a patch from over three years ago that adds support for the additional compare options. Patch provided by kruntuid. Slight cleanup and reshuffling of some code to make it cleaner.
CORE-8484

svn path=/trunk/; revision=65629
2014-12-13 21:17:59 +00:00
Eric Kohl
75e5e3462a [EVENTVWR]
Update the Event Detail Dialog to better match XP/2K3
Patch by Lee Schroeder.
I updated the remaining dialogs.
Translators: Please check the dialogs!

CORE_8904 #resolve

svn path=/trunk/; revision=65628
2014-12-13 20:53:06 +00:00
Timo Kreuzer
d4579fbe00 [DDK]
ExInitializePushLock is NTAPI!

svn path=/trunk/; revision=65627
2014-12-13 14:37:34 +00:00
Timo Kreuzer
65836ff301 [NTOSKRNL]
Fix x64 build

svn path=/trunk/; revision=65626
2014-12-13 11:01:57 +00:00
Pierre Schweitzer
065dd42b53 [TASKMGR]
Don't leak process handle

CORE-3716

svn path=/trunk/; revision=65625
2014-12-13 08:18:09 +00:00
Ziliang Guo
e3228a4c64 [TASKMGR]
Prevent task manager from killing critical processes. Patch by Ismael Ferreras Morezuelas.
CORE-3716

svn path=/trunk/; revision=65624
2014-12-13 06:35:56 +00:00
Ziliang Guo
8c112bc3e7 [EVENTVWR]
Display seconds for event time in event viewer. Patch by Lee Schroeder.
CORE-8612

svn path=/trunk/; revision=65623
2014-12-13 05:07:58 +00:00
James Tabor
7edb9e1657 [User32]
- Patch by Vincent Povirk : Allow EndMenu() calls from WM_ENTERMENULOOP.
- Patch by Akihiro Sagawa : Don't close a popup menu when clicking a sub-menu parent item twice.
- Move code to match wines. See CORE-8299.

svn path=/trunk/; revision=65622
2014-12-13 01:18:35 +00:00
Ziliang Guo
aa7bd0b1b7 [DESK.CPL]
Modify font enumeration code to deal with failure to read the registry key. Also change the registry key being queried to match the one used on Windows. Patch by Ricardo Hanke.
CORE-8203

svn path=/trunk/; revision=65621
2014-12-12 22:07:29 +00:00
Ziliang Guo
34dee12ec2 [SHIMGV]
Fix display window calculation. Patch by Ricardo Hanke.
CORE-7656

svn path=/trunk/; revision=65620
2014-12-12 21:15:17 +00:00
James Tabor
57fd9b8882 [Win32k]
- Fix double click on application icons. See CORE-3269.


svn path=/trunk/; revision=65619
2014-12-12 20:28:20 +00:00
David Quintana
5e63339a90 [EXPLORER]
* Followup to t65603. Fixes the start menu themeing regression (when running explorer in windows 2003).
CORE-8898 #resolve

svn path=/trunk/; revision=65618
2014-12-12 16:28:46 +00:00
Amine Khaldi
fd0186b855 [USER32] We're not using any debugging routines here.
svn path=/trunk/; revision=65617
2014-12-12 13:23:45 +00:00
Amine Khaldi
db0d247c82 [CRT] Explicitly mark strncpy and wcsncpy as __cdecl.
svn path=/trunk/; revision=65616
2014-12-12 13:20:14 +00:00
Amine Khaldi
395dc9ef1f [W32KDLL_APITESTS] Properly handle ASM files. Also use set_module_type() instead of manually setting the entry point.
svn path=/trunk/; revision=65615
2014-12-12 13:17:16 +00:00
Amine Khaldi
51fa01cea7 [SHIMGVW] Fix DLL stubs, intended to fix a crash on Windows. Patch by Ricardo Hanke.
CORE-8073 #resolve #comment Committed in r65614. Thanks!

svn path=/trunk/; revision=65614
2014-12-12 13:08:59 +00:00
Pierre Schweitzer
5bf209a1aa [NTFS]
Ach! Wir können noch nicht mit dem ID öffnen!

So far, bail out when we are requested to open a file with its MFT index instead of its name.
nfi triggers this a lot. Likely to be implemented ;-)

CORE-8725 

svn path=/trunk/; revision=65613
2014-12-11 22:15:49 +00:00
Pierre Schweitzer
00abdbc36f [NTFS]
My dear Pierre, in FSCTL_GET_NTFS_FILE_RECORD, you have METHOD_BUFFERED (yes, read well ;-)).
So if you want it to work, you HAVE to return the size of the data you wrote to the output buffer...
This makes FSCTL_GET_NTFS_FILE_RECORD finally working in ReactOS...

nfi.exe finally goes a bit farther, displays some files names and dies. Definitely still needs love.

CORE-8725

svn path=/trunk/; revision=65612
2014-12-11 21:58:45 +00:00
Giannis Adamopoulos
4b301b04e1 [EXPLORER]
* Use LoadLibrary instead of GetModuleHandle in the wrapper of WinList_Init.
* Shdocvw was never loaded till that point so WinList_Init was not called.
* Should fix Opening link location in windows.

svn path=/trunk/; revision=65611
2014-12-11 21:18:36 +00:00
Ziliang Guo
c960788a1d [SHIMGVW]
Implement rotation of images, but does not save changes or warn of quality loss.
CORE-7567

svn path=/trunk/; revision=65610
2014-12-11 20:01:52 +00:00
Ziliang Guo
0188f94d85 [CORE-8302]
Fix aspect ratio calculation in shell image viewer. Patch by Ricardo Hanke.

svn path=/trunk/; revision=65609
2014-12-11 19:57:03 +00:00
Ziliang Guo
cbc7920dbe [CORE-7737]
Implement browsing with the shell image viewer. Patch by Ricardo Hanke.

svn path=/trunk/; revision=65608
2014-12-11 19:52:47 +00:00
Ziliang Guo
f758aece6f [SHIMGVW]
Fix tooltips for image viewer at least on Windows. Patch by Richardo Hanke.
CORE-7740 #resolve

svn path=/trunk/; revision=65607
2014-12-11 18:11:08 +00:00
Sylvain Petreolle
16c3dc3016 test
svn path=/trunk/; revision=65606
2014-12-11 18:00:21 +00:00
Giannis Adamopoulos
502f155b91 [EXPLORER]
- Simplify some code by using the IUnknown_ exports of shlwapi and using CComPtr.

svn path=/trunk/; revision=65605
2014-12-11 17:42:56 +00:00
David Quintana
71a780a54c Oops. That didn't happen.
svn path=/trunk/; revision=65604
2014-12-11 16:33:43 +00:00
David Quintana
4afe020ac6 [EXPLORER]
* Cleanup variable names and fix a few typos along the way.
* Refactor the start button code into a CStartButton class.
NOTE: There is a known regression with start button themeing, which I'm working on. The missing notification icons are not caused by this.
CORE-8898

svn path=/trunk/; revision=65603
2014-12-11 16:32:07 +00:00
Ziliang Guo
e6979b9c26 [SHIMGVW]
Dynamically allocate the string for the file-type box. Patch by Ricardo Hanke.
CORE-7702 #resolve

svn path=/trunk/; revision=65602
2014-12-10 21:27:18 +00:00
Pierre Schweitzer
5e1a81a596 [NTFS]
Implement the downward fashion of FSCTL_GET_NTFS_FILE_RECORD and always return a file record which is in use
CORE-8725

svn path=/trunk/; revision=65601
2014-12-10 20:45:04 +00:00
Giannis Adamopoulos
7427f826d0 [EXPLORER]
* Simplify CreateStartMenu. Use CComPtr and IUnknown_SetSite.

svn path=/trunk/; revision=65600
2014-12-09 22:49:54 +00:00
Giannis Adamopoulos
50d056ca73 [EXPLORER]
* Make SetWindowStyle and SetWindowExStyle simple wrappers around SHSetWindowBits. There is no reason to reinvent the wheel.

svn path=/trunk/; revision=65599
2014-12-09 22:01:46 +00:00
Giannis Adamopoulos
f8a69bddfb [EXPLORER]
* Remove dragdrop.cpp. It was never used.

svn path=/trunk/; revision=65598
2014-12-09 21:55:56 +00:00
Giannis Adamopoulos
8264611855 [EXPLORER]
* Import some undocumented functions directly instead of using GetProcAddress

svn path=/trunk/; revision=65597
2014-12-09 21:37:59 +00:00
Pierre Schweitzer
5503ce60e6 [NTOSKRNL]
THE oneliner....
Properly read the information from the IRP to get the reparse tag. This fixes the handling of reparse mount points in ReactOS.

To make it short and crystal clear: reparse points from NTFS now work in ReactOS.
Demonstration with a Windows 7 volume read inside ReactOS with our NTFS driver and the "Documents and Settings" directory pointing to Users.

IopDoNameTransmogrify() properly gets the reparse data and extracts the mount point:
(../../ntoskrnl/io/iomgr/file.c:178) IopDoNameTransmogrify(B074DB98, B022BC28, B0226068)
(../../ntoskrnl/io/iomgr/file.c:232) Old name: '\Documents and Settings\'
(../../ntoskrnl/io/iomgr/file.c:266) Reparsed name: '\??\C:\Users'

Then.... http://www.heisspiter.net/~Pierre/rostests/NTFS_Reparse.png
First, I attempt to open "Documents and Settings" on my NTFS volume, it fails as "C:\" drive is hardcoded in the reparse point.
So, I create the Users directory on C:\ and a dummy file in it.
Then, I cd again which works now.
And dir properly shows the dummy created file :-).

svn path=/trunk/; revision=65596
2014-12-09 21:33:38 +00:00
Pierre Schweitzer
a98c9c1219 [NTOSKRNL]
Implement support reparse points in IofCompleteRequest()

svn path=/trunk/; revision=65595
2014-12-08 20:44:19 +00:00
Pierre Schweitzer
447fca27dc [NTFS]
Fix the implementation of the reparse point handling. This takes into account our $FILE_NAME attribute not being aware it's a reparse point...
We now fully get into Io and fail miserably as it seems I forgot one place where reparse points support has to be added.
D'oh!

svn path=/trunk/; revision=65594
2014-12-08 19:55:56 +00:00
Pierre Schweitzer
62f2a171cd [NTFS]
Fix a stupid copy paste error!

svn path=/trunk/; revision=65593
2014-12-08 19:51:55 +00:00
Pierre Schweitzer
f94ebb610d [NTFS]
On FCB creation, merge file attributes from $FILE_NAME and from $STANDARD_INFORMATION
Not sure it's fully legal, but it allows us to catch them all!

svn path=/trunk/; revision=65592
2014-12-08 19:36:40 +00:00
Pierre Schweitzer
a91d0a5297 [NTFS]
Implement GetStandardInformationFromRecord() which will return $STANDARD_INFORMATION attribute from a file record

svn path=/trunk/; revision=65591
2014-12-08 19:19:30 +00:00
Pierre Schweitzer
229c947271 [NTFS]
Complete a bit more the information dumped from attributes

svn path=/trunk/; revision=65590
2014-12-08 18:44:29 +00:00
James Tabor
a4c82de831 [Shell32]
- Use a timeout to send WM_COPYDATA.
- Recall reading, while being sent to a thread that is hung indefinitely or blocked, it will not return properly. This seems to be the case for CORE-8779. Play it safe and use a timeout.

svn path=/trunk/; revision=65589
2014-12-08 17:10:02 +00:00
Pierre Schweitzer
f9e8e07d32 [NTFS]
Do not forget to set IRP status block information in case of reparse point.

svn path=/trunk/; revision=65588
2014-12-08 07:35:45 +00:00
Eric Kohl
ce3e70b717 [USETUP]
Show an indicator for active partitons in the partition list.

svn path=/trunk/; revision=65587
2014-12-07 22:28:12 +00:00
Pierre Schweitzer
ebf69b050b [NTFS]
- Implement NtfsReadFCBAttribute() which is responsible for reading an attribute from a file which is referenced by its FCB. It will first read the file record in the MFT and then read the attribute, if found.
- Use NtfsReadFCBAttribute() to implement support for reparse point in NtfsCreateFile(). Once a reparse point is found, we attempt to open its data. Given their layout, we directly hand them to the Io manager. Just make sure that we return something consistent on disk. Only handle IO_REPARSE_TAG_MOUNT_POINT so far.
Next question to answer is: what to do when a reparse point is encountered during path traversal?

svn path=/trunk/; revision=65586
2014-12-07 20:59:45 +00:00
Pierre Schweitzer
0ee87ef80a [NTOSKRNL]
Addendum to r65584: don't forget to commit the header~

svn path=/trunk/; revision=65585
2014-12-07 18:02:04 +00:00
Pierre Schweitzer
70c4b88da1 [NTOSKRNL]
Implement support for (some) reparse points in Io manager. Ob should be already fine.
- Implement the IopDoNameTransmogrify() function. This one is responsible for checking the correct data for the reparse point and to update the path name in the file object. It will also free the memory buffer allocated by the driver to communicate the reparse information.
- Fix the support for reparse points in IopCompleteRequest(). If we receive reparse status + reparse tag we know, we call IopDoNameTransmogrify() to update file objet.
- Fix the support for reparse points in IopParseDevice() (oh! you again? :-)). When we complete the IRP ourselves, act as in IopCompleteRequest(). Then, we properly update objects manipulated by Io for the create request and we return STATUS_REPARSE so that Ob can update and recall us afterwards so that we complete.
Some parts are left unimplemented when it comes to reparse tags which are not IO_REPARSE_TAG_MOUNT_POINT. But still less than previously ;-).

svn path=/trunk/; revision=65584
2014-12-07 17:59:58 +00:00
Aleksandar Andrejevic
0dca6fd8ed [SHELL32:ICONS]
Replace the old "My Computer" icon with a new one.
New icon by: Ismael Ferreras Morezuelas.
CORE-8890 #resolve #comment Committed in revision r65583. Thanks!


svn path=/trunk/; revision=65583
2014-12-07 17:53:08 +00:00
Pierre Schweitzer
8d0ae10798 [BUGCODES]
Add bug check code 0xF9 DRIVER_RETURNED_STATUS_REPARSE_FOR_VOLUME_OPEN
Ref: http://msdn.microsoft.com/en-us/library/windows/hardware/ff560396%28v=vs.85%29.aspx

svn path=/trunk/; revision=65582
2014-12-07 16:54:27 +00:00
Pierre Schweitzer
5296d62877 [NTFS]
Implement NtfsFsdDeviceControl()


svn path=/trunk/; revision=65581
2014-12-07 14:16:13 +00:00
Pierre Schweitzer
14863b54d6 [NTFS]
Allow direct opening of a reparse point, but don't handle yet reparse itself

svn path=/trunk/; revision=65580
2014-12-07 14:05:47 +00:00
Pierre Schweitzer
ce76daabd9 [NTFS]
Implement NtfsFCBIsReparsePoint() which returns true in case current FCB is a reparse point

svn path=/trunk/; revision=65579
2014-12-07 13:30:13 +00:00
Giannis Adamopoulos
c3c85103f2 [EXPLORER]
- Add accelerator table for the taskbar. It is unused for now.

svn path=/trunk/; revision=65578
2014-12-07 11:07:51 +00:00
Daniel Reimer
aa00cb3f4c [OSK]
Update keyboard layout to become bigger, text fitting in the buttons and bein easier to use Part 2/2
+ small fixes.

svn path=/trunk/; revision=65577
2014-12-07 01:33:46 +00:00
Hermès Bélusca-Maïto
a177c84557 [OSK]: Add a better keyboard icon, copied from cpl/main/resources/keyboard.ico (it's keyboard tango icon). Pointed by swyter.
svn path=/trunk/; revision=65576
2014-12-06 19:58:28 +00:00
Daniel Reimer
132efe4c54 [OSK]
Update keyboard layout to become bigger, text fitting in the buttons and bein easier to use Part 1/2

svn path=/trunk/; revision=65575
2014-12-06 19:47:03 +00:00
Daniel Reimer
2ce1352fc8 Rule #1 of today: If you steal from resources... then at least steal from the most fitting one in layout matters...
[OSK]
Fix german layout by moving the "#" button where it should be and adding the "<" button next to "Y"

svn path=/trunk/; revision=65574
2014-12-06 13:43:55 +00:00
Daniel Reimer
b0d6a110ef [OSK]
- Forgot to translate some hidden text ^^
- Add a less brownish ROS icon based on our favicon file.

svn path=/trunk/; revision=65573
2014-12-06 13:25:50 +00:00
Daniel Reimer
d833e6777c [OSK]
- Add german resource file.
- Convert all others to UTF-8.
- Add manifest file and modify DOIALOG to DIALOGEX + changing default font to MS Shell Dlg. Hello themed keyboard ^^
TBD: Sizes are WAY too small IMO...

svn path=/trunk/; revision=65572
2014-12-06 13:08:48 +00:00
Sylvain Petreolle
2805f84806 [SHUTDOWN]
Remove useless check.

svn path=/trunk/; revision=65571
2014-12-06 11:33:31 +00:00
Hermès Bélusca-Maïto
f6b392dd4c Fix merge r65567.
svn path=/branches/condrv_restructure/; revision=65570
2014-12-05 22:24:49 +00:00
Hermès Bélusca-Maïto
a381da464a [OSK]
- Fix some coding style (whitespace): this is not win32k!!
- Remove unneeded headers.

svn path=/trunk/; revision=65569
2014-12-05 22:09:10 +00:00
James Tabor
e86551f057 [OSK]
- Add On Screen Keyboard to base applications. See CORE-7279 #resolved.

svn path=/trunk/; revision=65568
2014-12-05 21:43:00 +00:00
Hermès Bélusca-Maïto
9919d4fa10 Sync to trunk r65566.
svn path=/branches/condrv_restructure/; revision=65567
2014-12-05 21:20:35 +00:00
David Quintana
63a134ffc1 [BROWSEUI]
* Make the CBandSiteMenu class actually insert the Toolbars menu, even if it's not yet implemented. This fills the top of the taskbar context menu instead of leaving an ugly separator at the top.

svn path=/trunk/; revision=65566
2014-12-05 16:41:18 +00:00
Hermès Bélusca-Maïto
561200f6d3 Only layout was set different. Fix build.
svn path=/trunk/; revision=65565
2014-12-05 00:23:11 +00:00
Hermès Bélusca-Maïto
f471dceaae [LOCALIZATION]: Add Bengali to other files.
svn path=/trunk/; revision=65564
2014-12-05 00:21:36 +00:00
Hermès Bélusca-Maïto
b96ad17f20 [LOCALIZATION]
Add Bengali to the list of available lang #defines (see http://www.microsoft.com/resources/msdn/goglobal/default.mspx for the list).

svn path=/trunk/; revision=65563
2014-12-04 23:50:08 +00:00
Hermès Bélusca-Maïto
3ce4b32ab5 Fix some DPRINTs.
svn path=/trunk/; revision=65562
2014-12-04 23:15:18 +00:00
Hermès Bélusca-Maïto
03e7e918aa [CONSRV]
- Give the process handle which creates the screenbuffer, to ConDrvCreateScreenBuffer.
- Few code refactoring.

svn path=/trunk/; revision=65561
2014-12-04 22:47:13 +00:00
David Quintana
96d86fca58 [EXPLORER]
* Reorganize a bit the CTrayWindowCtxMenu::QueryContextMenu method and do not error if AddContextMenus fails. Fixes the taskbar context menu not opening on right-click.
(No need to call it explorer-new now that it's the primary one!)
CORE-8838

svn path=/trunk/; revision=65560
2014-12-04 19:53:02 +00:00
Giannis Adamopoulos
be4775c2b8 [INCLUDES]
* Move some shared definitions in a common header

svn path=/trunk/; revision=65559
2014-12-04 18:20:51 +00:00
Giannis Adamopoulos
d45dcc697d Try to fix build
svn path=/trunk/; revision=65558
2014-12-04 17:40:29 +00:00
Giannis Adamopoulos
8492b3df2a [SHELL32]
- Implement handling accelerators for CDesktopBrowser. The only noticeable difference is that pressing alt+f4 in the desktop doesn't close it.
See issue #8864 for more details.

svn path=/trunk/; revision=65557
2014-12-04 17:30:44 +00:00
Giannis Adamopoulos
d1c24a9a68 [EXPLORER]
- Implement registering all hotkeys that explorer registers in windows. Not all of them are implemented. The ones that are implemented work fine in windows but most of them don't work on ros. Thankfully nothing regressed by doing things the same with windows .

svn path=/trunk/; revision=65556
2014-12-04 17:20:43 +00:00
Giannis Adamopoulos
e018794583 [EXPLORER]
- Handle TWM_DOEXITWINDOWS in CTrayWindow. This message is sent from CDesktopWindow when it handles alt+f4 as an accelerator.
- Also handle SC_CLOSE for WM_SYSCOMMAND by calling ExitWindowsDialog.
- Fixes pressing alt+f4 in xp
- Now we have to make CDesktopWindow send TWM_DOEXITWINDOWS to the tray

svn path=/trunk/; revision=65555
2014-12-03 17:16:53 +00:00
David Quintana
079da15e39 [BROWSEUI]
* Add a stubbed CExplorerBand, which I will be using to investigate how the windows shell implements the sidebar panels.
This will never be called in ReactOS because our shell view doesn't handle the buttons for opening the sidebars, so it never asks the shell browser to open one.

CORE-8815

svn path=/trunk/; revision=65554
2014-12-03 16:11:46 +00:00
Amine Khaldi
4de21be788 [KBDES] Please Ismael Ferreras Morezuelas (swyter) with these mostly formatting changes.
CORE-8848

svn path=/trunk/; revision=65553
2014-12-03 11:40:37 +00:00
Amine Khaldi
c0d2bce06a [PSDK]
* Add missing MoveFileWithProgress{A,W} declarations.
CORE-4476

svn path=/trunk/; revision=65552
2014-12-03 11:35:29 +00:00
Jérôme Gardou
750f99929f [KMTEST/TCPIP]
- Adjust test data to better reflect w2k3 behaviour.
Thanks Amine for the tests.

svn path=/trunk/; revision=65551
2014-12-02 18:53:45 +00:00
Jérôme Gardou
d85b6d69f8 [KMTESTS/TCPIP]
- Fix MSVC build.

svn path=/trunk/; revision=65550
2014-12-02 18:38:32 +00:00
Jérôme Gardou
ec74758add [TCPIP_DRVTEST]
- Do not try to HeapFree a stack buffer.

svn path=/trunk/; revision=65549
2014-12-02 18:12:26 +00:00
Jérôme Gardou
e07183a73b [KMTESTS]
- Fix typo

svn path=/trunk/; revision=65548
2014-12-02 18:08:33 +00:00
Jérôme Gardou
e7ed762d4b [ROSTESTS]
- Add tcpip_drvtest, for now only testing the IOCTL behind iphlpapi's GetInterfaceInfo

svn path=/trunk/; revision=65547
2014-12-02 18:06:57 +00:00
Jérôme Gardou
a928f15f42 [KMTEST]
- Add some tests for tcpip.sys TDI capabilities (for now, TDI_PROVIDER_INFO)

svn path=/trunk/; revision=65546
2014-12-02 18:06:48 +00:00
Jérôme Gardou
6ef8833b55 [INCLUDE]
- Introduce tcpip_undoc.h defining undocumented tcpip.sys IOCTLs and structures.

svn path=/trunk/; revision=65545
2014-12-02 18:02:15 +00:00
David Quintana
4c9df7c3e5 [RSHELL]
* Oops. That shouldn't have been commited.

svn path=/trunk/; revision=65544
2014-12-02 12:27:44 +00:00
Jérôme Gardou
4c7f135588 [PSDK]
- Add missing TDI_SERVICE_* flags

svn path=/trunk/; revision=65543
2014-12-01 19:30:45 +00:00
David Quintana
527ff12b2c [RSHELL]
* Fix gcc build.

svn path=/trunk/; revision=65542
2014-12-01 16:41:58 +00:00
David Quintana
1e7e753a35 [RSHELL]
* The windows menu classes hide the items when the callback returns S_OK, and show them on S_FALSE. Fix our implementation to match.
* The windows CMergedFolder uses its own internal SHITEMID structure, so using filesystem paths directly won't work for hiding the Programs folder. 
* Also, because of the above, it's best to create the Programs menu object separately.


svn path=/trunk/; revision=65541
2014-12-01 16:32:58 +00:00
James Tabor
0bc45dba49 [Win32k]
- Use thread state for GetMessageExtraInfo.

svn path=/trunk/; revision=65540
2014-12-01 14:47:05 +00:00
Giannis Adamopoulos
8b417dd15d Try to fix Build
svn path=/trunk/; revision=65539
2014-12-01 09:42:29 +00:00
Giannis Adamopoulos
5b12c58f87 [WINSRV]
* Stop using ONEPARAM_ROUTINE_CSRSS_GUICHECK

[WIN32K]
* Move the manual gui check for console windows entirely in win32k
* This shouldn't cause any regressions to the ancient gui-on-demand feature

svn path=/trunk/; revision=65538
2014-12-01 09:38:04 +00:00
David Quintana
5967527b98 [RSHELL]
* Partially rewrite CMergedFolder to fix the invalid assumption that the results of enumerating a folder are ordered.
Fixes the folder merging on certain languages not working as expected, and also some other weaknesses of the previous implementation.

CORE-8835 #resolve #comment Should be fixed in r65537. Thanks for reporting.

svn path=/trunk/; revision=65537
2014-12-01 04:23:44 +00:00
Timo Kreuzer
685e2218f0 [WIN32K]
Fix reference counting in PDEVOBJ_pSurface. Fixes failed assertions on newer MSVC builds.

svn path=/trunk/; revision=65536
2014-12-01 00:01:17 +00:00
Hermès Bélusca-Maïto
7dc70b785f Fix the fix of the fix (yes, really!) Also, Hervé, I'm not really convinced you need to upcase the first letter in the RtlPathTypeDriveAbsolute case. Can you recheck that (and if unneeded, remove the commented line)?
svn path=/trunk/; revision=65535
2014-11-30 12:06:58 +00:00
Hermès Bélusca-Maïto
e077e546cd Fix the fix.
svn path=/trunk/; revision=65534
2014-11-30 11:56:36 +00:00
Hermès Bélusca-Maïto
20ac78114f [RTL]: RtlGetFullPathName_Ustr: Do not upcase the drive letter in the source string (that should not be modified), but use a temporary variable.
svn path=/trunk/; revision=65533
2014-11-30 11:53:19 +00:00
Hervé Poussineau
a198ec0538 [RTL] Upcase drive letter in RtlGetFullPathName_Ustr
svn path=/trunk/; revision=65532
2014-11-29 21:56:14 +00:00
Hervé Poussineau
62f368b666 [RTL] Add some missing UNIMPLEMENTED
svn path=/trunk/; revision=65531
2014-11-29 21:44:11 +00:00
Hervé Poussineau
85c6a329ba [NTFS] Fix CcInitializeCacheMap call
svn path=/trunk/; revision=65530
2014-11-29 21:43:57 +00:00
Hervé Poussineau
1cec297066 [NTOS:CC] Add some debug prints
svn path=/trunk/; revision=65529
2014-11-29 21:43:39 +00:00
Hermès Bélusca-Maïto
bac6bdb719 [USER32]
- On Win2k3, the EXIT_(ROS)_EX csr message has 3 parameters, instead of 2 (as on win2k), and the dwReserved is in fact unused.
[USERSRV]
- Add CSR shutdown callback UserClientShutdown (stub).
[CONSRV|USERSRV]
- The CSR shutdown callbacks are just stubs currently.

Part 5/X
CORE-8322

svn path=/trunk/; revision=65528
2014-11-29 21:19:01 +00:00
Pierre Schweitzer
e85718fec8 [FASTFAT]
- Add a flag to enable (or disable depends on your reading ;-)) the VPB swapout process for volume umount.
- By default, disable it for MSVC builds.

This *might* lolfix the MSVC builds.

Just for the record, we also have a bug in the GCC builds but it doesn't seem to show up. 
The main issue is that after formatting, we close handle to the volume, and IRP_MJ_CLEANUP is properly received and initiates a bit of dismount.
But then, the IRP_MJ_CLOSE is never received (why????) and thus, dismount cannot properly end.
This is a real & serious issue.

svn path=/trunk/; revision=65527
2014-11-29 20:26:07 +00:00
Pierre Schweitzer
8d5e230523 [FASTFAT]
Fix a FIXME in fastfat:
- Implement support for device buffers flush in VfatFlushVolume().

Unlike Windows SDK, we don't divert the current IRP to pass it to storage device. Here, we allocate a new IRP and call the device so that it flushes buffers.

svn path=/trunk/; revision=65526
2014-11-29 20:15:44 +00:00
Pierre Schweitzer
fa9b68d4bb [FASTFAT]
If you decrease handles count on cleanup, don't forget to increase it on create.

This fixes sharing violation on ReactOS installation with IopParseDevice hack disabled. 

svn path=/trunk/; revision=65525
2014-11-29 20:09:44 +00:00
David Quintana
6d54197797 [SHELL32]
* Make use of the resource IDs for all paths that need localizing. It was working in the past but was broken by re-synchronizing the code with WINE, which has unlocalized hardcoded strings instead.
This fixes the shortcuts not appearing in other languages.
* Fix the folder for Administrative tools in spanish language

[USERENV]
* Fix spanish folder names to match our shell32 and Windows.

TRANSLATORS: If your language is broken, ensure that the paths in userenv and shell32 resources match!

CORE-8834 #resolve #comment Should be fixed in trunk r65524, thanks for reporting. If this problem still happens, speak with your language's translator or provide your own patch.

svn path=/trunk/; revision=65524
2014-11-29 17:17:52 +00:00
Amine Khaldi
65489ad035 [KBDES] Update, fix and improve the Spanish keyboard layout file.
* Brought to you by Ismael Ferreras Morezuelas (swyter) with consistency formatting changes by me.
CORE-8848 #resolve #comment Committed the changes in r65523. Gracias!

svn path=/trunk/; revision=65523
2014-11-29 10:15:37 +00:00
James Tabor
c0851ad2a3 [NtUser]
- Fix timeout for send messages.
- Assert if not the same thread while dispatching messages.

svn path=/trunk/; revision=65522
2014-11-29 08:26:54 +00:00
Hermès Bélusca-Maïto
b085d814b6 [USER32]
- Move to an appropriate file, and correctly implement (i.e. via CSR call to USERSRV) EndTask.
[USERSRV]
- Hackplement SrvEndTask using our old code.

Part 4/X

CORE-8322

svn path=/trunk/; revision=65521
2014-11-28 23:42:40 +00:00
Hermès Bélusca-Maïto
725057bae3 Forgot this file too.
svn path=/trunk/; revision=65520
2014-11-28 23:24:38 +00:00
Hermès Bélusca-Maïto
e5d2106458 [WIN32K][ROSTESTS]
So...
... first of all NtUserQueryInformationThread takes only 4 parameters in Win2k3 so do it as well...
... and since we claim at being compatible with Win2k3 (and not XP), one **MUST** review **ALL** our win32k exports, in win32ss/w32ksvc.db database first, and then in our w32kdll apitests !!!!!
But I won't do it !

svn path=/trunk/; revision=65519
2014-11-28 23:19:25 +00:00
Hermès Bélusca-Maïto
7e5b127603 [WIN32K]: Remove those unneeded #defines, they are already declared in include/reactos/undocuser.h
CORE-8322

svn path=/trunk/; revision=65518
2014-11-28 21:59:32 +00:00
Hermès Bélusca-Maïto
e10e14dcd4 [WIN32K]: Move IntClientShutdown function to a dedicated file (that will contain other shutdown helper functions in the future). Part 3/X
CORE-8322

svn path=/trunk/; revision=65517
2014-11-28 21:48:44 +00:00
Hermès Bélusca-Maïto
331ed663bf [USERSRV]: Use UlongToHandle and make ServicesProcessId global (will be used later on, for shutdown). Part 2/X
CORE-8322

svn path=/trunk/; revision=65516
2014-11-28 21:08:57 +00:00
Hermès Bélusca-Maïto
c5601a5515 [USER32]: Move some logon-related functions to an appropriate file.
svn path=/trunk/; revision=65515
2014-11-28 20:58:50 +00:00
James Tabor
5ec4df01ce [NtUser]
- Revert 65431, it seems to be breaking more than it fixes. Process Explorer will break again, working on a better way to fix this. See CORE-7447.

svn path=/trunk/; revision=65514
2014-11-28 20:44:04 +00:00
Hermès Bélusca-Maïto
d3b2696104 [USER32]
- Call GetThreadConsoleDesktop of CONSRV if needed, in GetThreadDesktop (in case the process is a console app).
- Introduce two last-error helpers UserSetLast(NT)Error which work the same as the (Base)SetLast(NT)Error of kernel32, needed for CSR status errors etc...

[WINSRV]
- Improve the stub of SrvGetThreadConsoleDesktop (it needs to success, and atm. it always zeroes-out the returned console desktop handle).

svn path=/trunk/; revision=65513
2014-11-28 20:34:16 +00:00
Amine Khaldi
0abf72fdee [KERNEL32_WINETEST] Addendum to r65511.
svn path=/trunk/; revision=65512
2014-11-28 19:22:34 +00:00
Amine Khaldi
3be4abc045 [RTL] Import Wine commit f87767b by Piotr Caban: Handle ACTCTX_FLAG_ASSEMBLY_DIRECTORY_VALID flag when opening manifest in RtlCreateActivationContext.
svn path=/trunk/; revision=65511
2014-11-28 19:20:39 +00:00
Giannis Adamopoulos
198dcf7d19 [EXPLORER]
* Move some definitions in precomp.h

svn path=/trunk/; revision=65510
2014-11-27 21:11:29 +00:00
Giannis Adamopoulos
5c6b27436a Attempt to fix build.
svn path=/trunk/; revision=65509
2014-11-27 20:32:38 +00:00
Pierre Schweitzer
3c6889480c [FASTFAT]
Properly handle shared accesses on volume open.
No need to add the support for this in cleanup, it was already there.

svn path=/trunk/; revision=65508
2014-11-27 20:28:50 +00:00
Giannis Adamopoulos
98669c13f1 [HEADERS]
- Move definitions for DrawCaptionTemp to userundoc.h as it shouldn't be defined in the psdk
- Add browseui_undoc.h and move there the undocumented definitions for browseui
- Add comctl32_undoc.h and move there the undocumented definitions for comctl32
- Move undocumented definitions for shlwapi to shlwapi_undoc.h
- Add shellutils.h to contain helper macros and definitions that are nor per se undocumented.
- Cleanup internal definitions of explorer. Remove several temporary hacks. They were added at a time that these features were not implemented at all.

svn path=/trunk/; revision=65507
2014-11-27 20:27:19 +00:00
Amine Khaldi
4f8f6087e3 [CMAKE]
* Simplify compiling some single-source-file tools.

svn path=/trunk/; revision=65506
2014-11-27 19:09:07 +00:00
Amine Khaldi
62e8524e6e * Addendum to r65503 (consistent formatting).
svn path=/trunk/; revision=65505
2014-11-27 18:59:19 +00:00
James Tabor
c3543f4697 [NtUser]
- Fix code duplication.

svn path=/trunk/; revision=65504
2014-11-27 18:35:57 +00:00
Giannis Adamopoulos
39569fc498 [ADVAPI32]
- Stub ElfRegisterEventSourceW, ElfReportEventW and ElfDeregisterEventSource. These are needed by windows sxs.dll, and sxs.dll is needed by windows basesrv.dll.

svn path=/trunk/; revision=65503
2014-11-27 14:21:43 +00:00
Ged Murphy
7a8c45344a [DEVICE_MANAGER]
- Test whether a driver is hidden or not by checking its status instead of the old hack of hiding certain classes which we deemed should be hidden.
- Add support for hiding devices and problem overlays when showing by connection. 
- We now show and hide identical devices when run alongside the Win8 MS device manager in both by type and by connection.
- Update the radio buttons when selecting the menu type.
- Add a manifest and use Win7 arrows on the TreeView.

svn path=/trunk/; revision=65502
2014-11-27 13:47:49 +00:00
Pierre Schweitzer
267881ff71 [FASTFAT]
Set clean shutdown bit on dismount

svn path=/trunk/; revision=65501
2014-11-27 06:16:21 +00:00
Amine Khaldi
9cfe36c5ca [SHELL] Reapply r65477 (rename explorer-new to explorer).
svn path=/trunk/; revision=65500
2014-11-26 23:24:26 +00:00
Amine Khaldi
e73c9fb02d [SHELL] Reapply r65476 (rename explorer to explorer-old).
svn path=/trunk/; revision=65499
2014-11-26 23:22:44 +00:00
Amine Khaldi
2a2210d52b [SETUP]
* Set 32bpp as default bit depth instead of 16bpp. Suggestion and patch provided by Ismael Ferreras Morezuelas (swyter).
CORE-8826 #resolve #comment Committed in r65498. Gracias!

svn path=/trunk/; revision=65498
2014-11-26 23:17:02 +00:00
Amine Khaldi
96cdf37afe [SHELL] Move shlguid_undoc.h, shlobj_undoc.h and shlwapi_undoc.h to our includes folder instead of the PSDK one.
CORE-7330

svn path=/trunk/; revision=65497
2014-11-26 23:03:06 +00:00
Amine Khaldi
5c1a8109c8 * The Shell.. for a long time we dreamed of having a compatible, properly working rewrite, but it's easier said than done. Over the years this effort has been split into tasks, and this branch was the biggest overall. Now it's time to merge it back to trunk!
* This merge is also a chance to thank every single person involved directly and indirectly in this epic work, among them: Martin Fuchs for ReactOS explorer which we are respectfully retiring now, as it served the project so well over all these years. Thomas Bluemel (Thomas Weidenmueller aka w3seek) for his brave work on the shell, mainly his explorer_new. Andrew Hill for advancing the shell bringup with some impressive work. David Quintana, Giannis Adamopoulos and Huw Campbell for working as a solid team on making this branch a huge success, allowing the shell rewrite dream to finally become a reality. Again, thank you all!
* Merging this branch is not the end.. it's the beginning of some serious bug fixing based hopefully on the Community's continuous feedback.
* Finally, here are *some* of the highlights of this branch (simply put):

[BROWSEUI] Halfplement the address bar. Mostly implement the Favorites menu. Implement handling most hotkeys that should be handled by CShellBrowser. Fix various bugs.

[EXPLORER_NEW] Convert to C++ and use several wtl-like classes to simplify it. Fix several bugs and implement misc missing features.

[FILEBROWSER] A small exe file that opens a new file browser window in its own process. Tested to work in windows. It can be used to test our browseui.dll in windows.

[FONTS] A new marlett font.

[MSGINA] Add a proper shutdown dialog that's used when the user selects shutdown from the start menu (this is how it's done in Windows).

[RSHELL] A temporary module that hosts the implementation of the following classes needed for the shell: CMenuBand, CMenuDeskBar, CMenuSite, CMergedFolder, CStartMenu. These were implemented and tested in windows and for that reason they are still there. Should be moved in shell32 in the future.

[SHELL32] Reorganize files to isolate the ones that are not yet forked from wine. Fix various problems. Simplify the implementation of some shell folders. Implement filling in the file menu in the file browser.

[STOBJECT] A shell extension responsible for misc taskbar notification icons. So far only the sound icon is implemented. Adding this is necessary as the old explorer had the sound icon built in and deprecating it needs a proper solution for these notification icons.

[WIN32K] Fix several bugs that prevented the new start menu (that was implemented and tested in Windows) from functioning properly in ReactOS, mostly due to focus issues. Fix several shell notifications to behave more like in Windows.

* Tonight! We shall feast!
* And tomorrow the US guys shall feast again, on turkey! :p

CORE-7330

svn path=/trunk/; revision=65496
2014-11-26 19:49:18 +00:00
Ged Murphy
d006975972 [DEVICE_MANAGER]
- On refresh, recurse the tree and delete all the Device Ids attached to each node
- Fix SAL and a few missing comments

svn path=/trunk/; revision=65495
2014-11-26 19:46:26 +00:00
Amine Khaldi
0b09ff9f77 * Addendum to r65483.
svn path=/branches/shell-experiments/; revision=65494
2014-11-26 18:02:55 +00:00
Ged Murphy
552b2ba55c [DEVICE_MANAGER]
- Add a class for managing the device view, and a class for managing the device objects.
- Implement listing devices by type and by connection.
- Add support for showing hidden devices
- Add support for showing unknown devices with overlay icons.
- implement showing the device properties via dounle click or hitting enter
- Add support for both Win7/8 as well as XP
- Make the code much more readable and maintainable. and easier to move to an mmc snapin if we ever get one.

I forgot this existed until today. I had some spare time so I decided to have a quick go at finishing it. Stick with the original one for now though, I ran out of time....

svn path=/trunk/; revision=65493
2014-11-26 17:21:45 +00:00
Amine Khaldi
129e820c19 * Sync up to trunk head (r65491).
svn path=/branches/shell-experiments/; revision=65492
2014-11-26 16:49:31 +00:00
James Tabor
8da4894280 [Explorer]
- Restore the original four virtual window support. See CORE-6151.

svn path=/trunk/; revision=65491
2014-11-26 15:29:51 +00:00
Timo Kreuzer
556eadf871 [WIN32K]
- Implement FLOATOBJ_bConvertToLong inline function that converts a FLOATOBJ to a long or returns FALSE if the value would overflow a LONG
- Remove underscore prefixes from inline FLOATOBJ functions and use it only on those that already exist as non-inline versions.
- Remove duplicated FLOATOBJ defines for non-x86
- Fail on integer overflow in XFORMOBJ_bXformFixPoints to avoid creating bogus coordinates.

svn path=/trunk/; revision=65490
2014-11-25 23:44:59 +00:00
Hermès Bélusca-Maïto
fc2043573c Forgot this include...
svn path=/trunk/; revision=65489
2014-11-25 23:36:56 +00:00
Hermès Bélusca-Maïto
8b95166d91 [LSASS][SERVICES][WINLOGON]: As CSRSS and SMSS already, those apps should be marked as critical for the system. See http://www.geoffchappell.com/studies/windows/win32/ntdll/api/rtl/peb/setprocessiscritical.htm for more details.
svn path=/trunk/; revision=65488
2014-11-25 23:34:14 +00:00
James Tabor
d1f8d55254 [Win32k]
- Fixes wine win.c:test_SetParent last ShowWindow test after popup dies.

svn path=/trunk/; revision=65487
2014-11-25 23:03:43 +00:00
Pierre Schweitzer
fb11517f41 [NTFS]
Make the bound check more consistent and more accurate

svn path=/trunk/; revision=65486
2014-11-25 21:03:17 +00:00
Timo Kreuzer
3b807b3629 [FREELDR]
Move down MEMORY_MARGIN to 0x9A00 to fix boot on BIOSes with even larger EBDAs (see also r64945 and r65127), still leaving 48KB for the DISKREADBUFFER
CORE-8830 #resolve

svn path=/trunk/; revision=65485
2014-11-25 20:21:16 +00:00
James Tabor
6cabec82f6 [Win32k]
- Fix wine win.c:test_mouse_input:WM_COMMAND tests.

svn path=/trunk/; revision=65484
2014-11-25 19:56:40 +00:00
Amine Khaldi
861d261971 [EXPLORER][EXPLORER_NEW]
* Revert the renames (r65476 => r65478).
* We'll do these after we merge.

svn path=/branches/shell-experiments/; revision=65483
2014-11-25 16:17:58 +00:00
Amine Khaldi
9bdc095371 * Sync up to trunk head (r65481).
svn path=/branches/shell-experiments/; revision=65482
2014-11-25 12:43:36 +00:00
Timo Kreuzer
2e4fc079dc [PSDK/XDK]
Add back definitions that go lost in the last commit.
winnt.h is autogenerated, please do not modify it directly, but instead modify the related file in XDK and regenerate the headers from XDK.

svn path=/trunk/; revision=65481
2014-11-25 09:46:18 +00:00
Timo Kreuzer
c6f12ff6ba [PSDK]
When I wrote "the compiler can optimize this better" I was obviously referring to a sane compiler like MSVC. Optimize (U)Int32x32To64 on x86 GCC builds by using __emul(u), since the native math results in horribly inefficient code doing 3 multiplications and some shifts.

svn path=/trunk/; revision=65480
2014-11-25 09:08:34 +00:00
David Quintana
e047c09545 [EXPLORER-NEW]
* Top-Level windows have no parent background so it makes no sense to try to draw it.

svn path=/branches/shell-experiments/; revision=65479
2014-11-25 01:19:32 +00:00
David Quintana
fd5c4836ad Oops. My bad.
svn path=/branches/shell-experiments/; revision=65478
2014-11-24 23:53:28 +00:00
David Quintana
ff807f43d0 [EXPLORER-NEW]
* Rename the new explorer to take the now-vacant folder name, to match the output filename. Change 2/2

svn path=/branches/shell-experiments/; revision=65477
2014-11-24 23:10:11 +00:00
David Quintana
e0e308711a [EXPLORER-OLD]
* Although the output filename was changed for almost as long as this branch has existed, I never bothered to actually rename the folders to reflect the output name. Change 1/2

svn path=/branches/shell-experiments/; revision=65476
2014-11-24 23:08:50 +00:00
Pierre Schweitzer
10d2eaf33b [NTFS]
Add the reparse point attribute definition

svn path=/trunk/; revision=65475
2014-11-24 20:02:40 +00:00
Pierre Schweitzer
f2e863d929 [NTFS]
Warn about unimplemented sub-node browsing while looking into a MFT directory stream.
Might likely explain why we cannnot enumerate all the files on a Win7 volume.

svn path=/trunk/; revision=65474
2014-11-24 20:01:34 +00:00
Pierre Schweitzer
d23756ccb7 [NTFS]
ASSERT -> NT_VERIFY

Spotted by Thomas. Thanks :-)

svn path=/trunk/; revision=65473
2014-11-24 19:54:22 +00:00
James Tabor
620eec28ea [NtUser]
- Synchronize mouse messages. Part II
- Dedicated to Giannis Adamopoulos and Amine Khaldi.
- Additional fixes are added.
- This should be more accurate, based on "Hit Testing: Which HWND is the mouse over?":
http://blogs.msdn.com/b/dwayneneed/archive/2008/09/08/transparent-windows-in-wpf.aspx
- Note: Older FireFox menu item hilite select seem to work now, do not need to keep moving the mouse to keep it hilited to be selected.
- Test results: https://reactos.org/sites/all/modules/reactos/testman/compare.php?ids=33709,33710,33713

svn path=/trunk/; revision=65472
2014-11-24 02:50:18 +00:00
Hermès Bélusca-Maïto
398b0a3c4f [CONSRV]: Implement CREATE_NO_WINDOW support.
svn path=/trunk/; revision=65471
2014-11-23 23:04:45 +00:00
Pierre Schweitzer
1dc01e0746 [NTFS]
- Fix $FILENAME_ATTRIBUTE definition to allow reading reparse points tag
- Add missing file attribute (reparse point)

svn path=/trunk/; revision=65470
2014-11-23 20:52:59 +00:00
Hermès Bélusca-Maïto
f43bb8d7df [TASKMGR]
- Show programs command line in taskmgr.
  Patch by Ismael Ferreras Morezuelas with minor modifications by me.
- int nMaxCount --> ULONG nMaxCount (that makes everything clearer and removes MSVC warnings).
CORE-5467 #resolve #comment Feature committed in revision 65469, cheers ;)

svn path=/trunk/; revision=65469
2014-11-23 20:10:15 +00:00
Pierre Schweitzer
4a61f5ee5b [NTFS]
- Implement NtfsGetPositionInformation(), NtfsGetBasicInformation()
- Add a fixme in NtfsGetStandardInformation() regarding the number of links

svn path=/trunk/; revision=65468
2014-11-23 19:53:16 +00:00
Hermès Bélusca-Maïto
2fb9a4573b Fixup a potential division by zero (that happens anyway in my tests).
svn path=/trunk/; revision=65467
2014-11-23 19:16:41 +00:00
Hermès Bélusca-Maïto
734795e23e [TASKMGR]
Improve formatting memory size usage in the status bar of Task Manager.
Patch by Ismael Ferreras Morezuelas (swyter).
CORE-8810 #resolve #comment Committed in r65466, thanks d:^D

svn path=/trunk/; revision=65466
2014-11-23 18:36:25 +00:00
Hermès Bélusca-Maïto
60205c7b0b [WIN32K]: Use the logon process ID instead of a full win32k process object, it simplifies code in some parts.
svn path=/trunk/; revision=65465
2014-11-23 16:09:00 +00:00
Hermès Bélusca-Maïto
72074af697 Whitespace fixes.
svn path=/trunk/; revision=65464
2014-11-23 15:57:13 +00:00
Hermès Bélusca-Maïto
d35b779e48 [WINSRV]: Pave the way for proper ReactOS shutdown. Part 1/X
CORE-8322

svn path=/trunk/; revision=65463
2014-11-23 15:50:49 +00:00
Pierre Schweitzer
d010ffc7df [NTFS]
- In NtfsQueryDirectory(), don't upcase name in dir search pattern, it can conflict with POSIX names.
- In CompareFileName(), handle the fact that for Win32 & DOS we do case insensitive comparisons by upcasing name before match. Don't do it for POSIX names!

This fixes name completion in cmd for POSIX. And doesn't break it for Win32 :-).

svn path=/trunk/; revision=65462
2014-11-23 15:49:24 +00:00
Hermès Bélusca-Maïto
16aefd4c54 Resuscitate VMS subsystem (yeah, you've correctly read: VMS!!) from revision 24496.
svn path=/trunk/; revision=65461
2014-11-23 15:24:49 +00:00
Hermès Bélusca-Maïto
2ca9fcd3b0 Resuscitate POSIX subsystem from revision 21378.
svn path=/trunk/; revision=65460
2014-11-23 15:23:36 +00:00
Hermès Bélusca-Maïto
9f2787eb32 Resuscitate OS/2 subsystem from revision 24496.
svn path=/trunk/; revision=65459
2014-11-23 15:22:07 +00:00
Hermès Bélusca-Maïto
ace5ce5329 Create a repository to ressuscitate our verrrrry old subsystems.
svn path=/trunk/; revision=65458
2014-11-23 14:50:34 +00:00
Hermès Bélusca-Maïto
f8fc01c589 [CONSRV]: Reduce code duplication and remove unused InputWaitHandle member.
svn path=/trunk/; revision=65457
2014-11-23 14:26:37 +00:00
Pierre Schweitzer
950747c6d1 [NTFS]
- Implement GetBestFileNameFromRecord() which will select the higher subsystem name available (POSIX -> Win32 -> DOS) and return it
- Replace the hand-made implementation of it in dirctl functions relying on it (NtfsGetDirectoryInformation(), NtfsGetFullDirectoryInformation(), NtfsGetBothDirectoryInformation())
- Use it in NtfsMakeFCBFromDirEntry()

This fixes browsing POSIX volume (and opening file) in cmd. Even though, explorer doesn't seem to be happy with such change...
This doesn't fix yet the autocompletion in cmd either.

svn path=/trunk/; revision=65456
2014-11-23 14:07:08 +00:00
Hervé Poussineau
c966e68f3b [PSDK] Add some missing setupapi-related functions
svn path=/trunk/; revision=65455
2014-11-23 13:48:20 +00:00
Hervé Poussineau
997dd60f96 [SCSIPORT] Better error messages when receiving unexpected IOCTLs of mount manager
svn path=/trunk/; revision=65454
2014-11-23 13:48:12 +00:00
Hervé Poussineau
bcc95895c6 [NTOS:CC] Fix bug in CcPinRead
In fact, this bug is never exposed because CcPinMappedData always returns TRUE.

svn path=/trunk/; revision=65453
2014-11-23 13:48:06 +00:00
Hervé Poussineau
b89c9e939b [NTOS:MM] Fix warnings when NEWCC is enabled
svn path=/trunk/; revision=65452
2014-11-23 13:48:01 +00:00
Hermès Bélusca-Maïto
5d7ced37ec [NTVDM]: Rewrite video window scrolling code more efficiently (i.e. getting rid of HeapAlloc/Free calls). As a bonus, implement scrolling horizontally.
svn path=/trunk/; revision=65451
2014-11-23 12:03:55 +00:00
Hermès Bélusca-Maïto
0f5d768793 [KERNEL32]
- Fix a misspelling.

[NTDLL]
- Fix the prototypes of RtlFormatMessageEx(Ex), this fixes strange apps kills when they use FormatMessage[A/W] with win2k3 kernel32 (that uses internally RtlFormatMessage to do the job).

svn path=/trunk/; revision=65450
2014-11-22 23:13:41 +00:00
Hermès Bélusca-Maïto
b280f71b27 [KERNEL32][CONSRV]
- Remove the USE_CONSOLE_INIT_HANDLES define since now we "support" the console initialization events.
- The events in the CONSOLE_START_INFO structure are console initialization events used for asynchronous console creation, that are set whenever console creation succeeds, or fails.
- Stubplement their usage in CONSRV.

Now we are able to fully use Windows 2k3 kernel32.dll and be able to run console programs with it.

svn path=/trunk/; revision=65449
2014-11-22 22:13:08 +00:00
Hermès Bélusca-Maïto
ec34daaa0a [NTVDM]:
- INT 15h offers some "OS hooks" that do nothing normally but return success.
- Stub "Switch to protected mode" INT 15h AH=89h function.

svn path=/trunk/; revision=65448
2014-11-22 19:18:23 +00:00
Aleksandar Andrejevic
9f8411bf3a [FAST486]
- Fix interrupts in V86 mode.
- CLI and STI should call Fast486GetCurrentPrivLevel in their IOPL check, since it
  always returns 3 if the VM flag is set.


svn path=/trunk/; revision=65447
2014-11-22 16:33:47 +00:00
Hermès Bélusca-Maïto
e9b8b6f597 [FAST486]: Fix a comment and use the TOGGLE_OPSIZE macro.
svn path=/trunk/; revision=65446
2014-11-22 16:23:59 +00:00
Timo Kreuzer
34e909ecc9 [WIN32K]
- In XFORMOBJ_bApplyXform do not overwrite the data in the input buffer
- Make XFORMOBJ_bXformFixPoints return VOID instead of BOOL

svn path=/trunk/; revision=65445
2014-11-22 09:07:33 +00:00
Amine Khaldi
80b272de8e [TRANSLATIONS][WDMAUD]
* Reactos/ReactOs => ReactOS.

svn path=/trunk/; revision=65444
2014-11-21 18:57:46 +00:00
Amine Khaldi
1dd4984c28 [NTOS:PNPMGR]
* Attempt to address Timo's review about coding style changes.

svn path=/trunk/; revision=65443
2014-11-21 18:45:18 +00:00
Hermès Bélusca-Maïto
37a3e6af8a [NTVDM:DOS]: Don't forget to update CommandInfo.Env otherwise we would use the old environment buffer that is now invalid, hence corrupting the heap and doing other nasty things :P Debugged by V.
svn path=/trunk/; revision=65442
2014-11-21 15:55:39 +00:00
Aleksandar Andrejevic
6ad2881080 [FAST486]
Attempt to write the value to the stack before subtracting from the actual ESP register
in Fast486StackPush.


svn path=/trunk/; revision=65441
2014-11-21 09:46:57 +00:00
James Tabor
692cd5a0bb [NtUser]
- Synchronize mouse messages. Best way to do this, just post the move message while it occurs and just update it with recurrent information. The other way was to check time stamps and that was a hackish headache. Then the scorn and reticule would erupt. So it was easier to just post to the queue, update and if a mouse down up was captured than it would be in the order as it was received.
- See CORE-8779 #resolve, CORE-8394, CORE-7797, CORE-7447.

svn path=/trunk/; revision=65440
2014-11-21 03:15:27 +00:00
Hermès Bélusca-Maïto
8e44d4d4af [URTL]: Fix whitespace plus misspelling.
svn path=/trunk/; revision=65439
2014-11-21 02:35:38 +00:00
Hermès Bélusca-Maïto
d8808ad153 [NTVDM]: Make the environment strings list optional for some Dos app start functions.
svn path=/trunk/; revision=65438
2014-11-21 02:26:53 +00:00
Hermès Bélusca-Maïto
83303b29d9 [NTVDM]
- Add stubs for VDDReserve/ReleaseIrqLine;
- Add stub implementation for Direct Memory Access;
- Add corresponding exports.

svn path=/trunk/; revision=65437
2014-11-21 00:22:48 +00:00
Hermès Bélusca-Maïto
fc11139981 [DDK]
Add few VDD API prototypes:
- VDDReserve/ReleaseIrqLine to get a "lock" on an IRQ line (so that VDDs can check whether some IRQs are free or not).
- Add DMA services.

svn path=/trunk/; revision=65436
2014-11-21 00:13:51 +00:00
Hermès Bélusca-Maïto
b17f25b733 [NTVDM]: Temporarily disable the mouse driver since mouse still doesn't fully work.
svn path=/trunk/; revision=65435
2014-11-21 00:11:53 +00:00
Hermès Bélusca-Maïto
534adb371c [NTVDM]: Static'ify some local vars & functions.
svn path=/trunk/; revision=65434
2014-11-21 00:11:11 +00:00
Sylvain Petreolle
b13a724042 [NET]
Update spanish localization.
Patch by swyter.
CORE-8817 #resolve

svn path=/trunk/; revision=65433
2014-11-20 22:05:58 +00:00
James Tabor
f0350171f6 [NtUser]
- Remove over compensating code. See CORE-7447.

svn path=/trunk/; revision=65432
2014-11-19 06:05:39 +00:00
James Tabor
d7df3046e0 [NtUser]
- Fix Process Explorer crash in Win32k. See CORE-8779 and CORE-7447.

svn path=/trunk/; revision=65431
2014-11-19 05:35:33 +00:00
Hermès Bélusca-Maïto
a60eca74a7 [NTVDM]
Code organization:
- Create directory hardware/video where to put all video emulation (VGA currently, and maybe other things in the future);
- Create directory hardware/sound where to put all sound emulation (PC speaker currently, and maybe other things in the future);
- timer.c/h --> pit.c/h;
- Adjust the necessary includes and the cmakefiles;
- Remove unneeded includes;
- NTVDM is allowed to have its own VS project ^^

svn path=/trunk/; revision=65430
2014-11-18 02:18:18 +00:00
Hermès Bélusca-Maïto
d6985bdb0a [NTVDM]: Inline a function and fix spelling.
svn path=/trunk/; revision=65429
2014-11-18 00:44:24 +00:00
Amine Khaldi
b868fbf04a [RAPPS]
* Licence => License.
CORE-8804 #resolve #comment Committed in r65428. Thanks!

svn path=/trunk/; revision=65428
2014-11-17 16:33:45 +00:00
Amine Khaldi
37eed35556 * Sync up to trunk head (r65426).
svn path=/branches/shell-experiments/; revision=65427
2014-11-17 15:16:41 +00:00
Hermès Bélusca-Maïto
0bbe7eda19 [NTVDM]
- Remove unneeded commented code;
- Fix few things related to committing the reserved low-memory VDM page by kernel32;
- Decommit this memory when we terminate NTVDM.

svn path=/trunk/; revision=65426
2014-11-17 02:08:12 +00:00
Hermès Bélusca-Maïto
bc27bfaa6b [NTVDM]: Use the ScreenMode variable in other places too...
svn path=/trunk/; revision=65425
2014-11-17 00:34:29 +00:00
Hermès Bélusca-Maïto
5dbe74176e [NTVDM]
- Do not recalculate at each refresh the new resolution that usually does not change (if it changes because of a modification of some VGA register, we detect that, and we change the vga mode). So keep the current resolution and use it in paint functions.
- Really reenter a new text/graphic mode when needed (ie. when alphanumeric bit and computed resolution change), this avoids useless console screenbuffers recreations (and flickering), things go faster, yet the VGA registers are still updated (as expected). See r65379, r65018 and r65015 for more details.

svn path=/trunk/; revision=65424
2014-11-17 00:12:20 +00:00
Hermès Bélusca-Maïto
9219f1f8ef [NTVDM]: Code formatting only!
svn path=/trunk/; revision=65423
2014-11-16 23:15:12 +00:00
Hermès Bélusca-Maïto
f4bed99915 [NTVDM]
- Rename flags;
- Improve VgaUpdateTextCursor a bit (and fix a bug);
- Improve a DPRINT and monitor CGA ports (for debugging purposes);
- Code styling.

svn path=/trunk/; revision=65422
2014-11-16 22:19:32 +00:00
Hermès Bélusca-Maïto
4a12998fb3 [NTVDM]
- Remove some old comments (and commented DPRINTs);
- More support for Bda->VGAOptions;
- Improve implementation of VidBiosSetCursorShape (start some cursor emulation, and add a note about it);
- Implement few "Alternate Function Select" subfunctions.

svn path=/trunk/; revision=65421
2014-11-16 16:01:09 +00:00
Timo Kreuzer
2577b38332 [WIN32K]
Copy only the actual size of the BITMAPINFO back to usermode in NtGdiGetDIBitsInternal.

svn path=/trunk/; revision=65420
2014-11-16 14:22:54 +00:00
Timo Kreuzer
6e7c087233 [LIBS]
Remove some explicit comparisons with TRUE and make desired explicit comparison more obvious.
Patch by Love Nystrom, modified by me. Fixes a bug in RtlUpcaseUnicodeString. Not committed: modifications to freetype, since this is 3rd party code.
CORE-8799


svn path=/trunk/; revision=65419
2014-11-16 14:07:37 +00:00
Eric Kohl
71b471e27e [NET]
Replace remaining hard coded 'padding' strings.

svn path=/trunk/; revision=65418
2014-11-16 10:34:49 +00:00
Sylvain Petreolle
cc4b3a61b2 [EXPLORER-NEW]
Fix includes casing.

svn path=/branches/shell-experiments/; revision=65417
2014-11-15 23:12:06 +00:00
Timo Kreuzer
dfd58eda6d [NTOSKRNL]
Remove explicit comparisons with TRUE
Patch by Love Nystrom, adjusted by me
CORE-8799

svn path=/trunk/; revision=65416
2014-11-15 22:47:51 +00:00
David Quintana
1795a3bf16 [SHELL32]
* Commit the folder location fixes. They are mostly untested due to being unable to boot to desktop, but looking at the contents of the HDD after syssetup runs seems that the shortcuts are all created in their rightful place. If anyone is able to boot, feel free to test.

svn path=/branches/shell-experiments/; revision=65415
2014-11-15 18:34:22 +00:00
Hermès Bélusca-Maïto
f7311a5a01 [NTVDM]: Fix various little things in the video BIOS (and fix some video mode registers).
svn path=/trunk/; revision=65414
2014-11-15 16:14:04 +00:00
Daniel Reimer
d557b68747 Deleting Old RAPPS's Readme Files And Adding New README File by Erdem Ersoy
CORE-8503 #resolve #comment I have no problems with a translated readme file, but the line to the Wiki was added.

svn path=/trunk/; revision=65413
2014-11-15 15:58:43 +00:00
Daniel Reimer
cca301190e rapps: (for database) Many Improvements and Many Fixes by Erdem Ersoy
CORE-7710 #resolve #comment Committed again from the same CORE report. Note to my self, next time this thing is being reopened, I will set it to WONTFIX! Open a NEW REPORT!

svn path=/trunk/; revision=65412
2014-11-15 15:46:30 +00:00
Daniel Reimer
e486d61d55 Adding New Apps for Rapps by Erdem Ersoy
CORE-7493 #resolve #comment Added, but the more recent versions + changed the SF mirror to the generic one + skipped the translating of a application's english name. Thx

svn path=/trunk/; revision=65411
2014-11-15 15:35:40 +00:00
Daniel Reimer
efc06198c2 Add Inkscape to rapps by Ricardo Hanke
CORE-8604 #resolve #comment Added to rapps, thx for the prove that it works ^^

svn path=/trunk/; revision=65410
2014-11-15 15:33:13 +00:00
Amine Khaldi
bed61d0b02 [ADVAPI32]
* Update ConvertSecurityDescriptorToStringSecurityDescriptor{A,W}().
CORE-8540

svn path=/trunk/; revision=65409
2014-11-15 15:12:24 +00:00
Pierre Schweitzer
c846c8e4a8 [MOUHID]
[KBDHID]
Remove redundant code in DriverEntry()

svn path=/trunk/; revision=65408
2014-11-15 13:41:24 +00:00
Amine Khaldi
c4c4f1af81 [MSAFD]
* Plug a leak. CID 716386.
CORE-7975

svn path=/trunk/; revision=65407
2014-11-15 12:28:03 +00:00
Amine Khaldi
e2407791fb [DEVMGR]
* Plug a leak. CID 1105932.
CORE-7975

svn path=/trunk/; revision=65406
2014-11-15 12:09:14 +00:00
Amine Khaldi
45c3c5fa2b [ADVAPI32]
* Update CreateProcessWithTokenW().
CORE-8540

svn path=/trunk/; revision=65405
2014-11-15 11:57:24 +00:00
Eric Kohl
cee173bc8d [APPWIZ]
Formatting. No code changes!

svn path=/trunk/; revision=65404
2014-11-15 11:52:50 +00:00
Aleksandar Andrejevic
bc0b6aa8fc [NTVDM]
In non-standalone mode, commit the memory reserved in CreateProcessInternalW instead of
allocating from the heap.


svn path=/trunk/; revision=65403
2014-11-15 01:35:28 +00:00
Pierre Schweitzer
fc3c9fbab5 [KMTEST]
Close your eyes.
Really do it! I see you kept them open...
There are closed now?
OK... All fine.
You can open them again.
Nothing happened.
Source code always used to be like that. A commented was never left by mistake in it.
Never, ok? 

svn path=/trunk/; revision=65402
2014-11-14 21:01:45 +00:00
Pierre Schweitzer
093fafbb5e [KMTEST]
Reenable tests for MCBs. They got fixed by Hervé in r65398.

ROSTESTS-106 #resolve #comment Fixed by Hervé in r65398. Thanks!

svn path=/trunk/; revision=65401
2014-11-14 19:43:39 +00:00
Daniel Reimer
c4bdd01325 Rapps: Word Viewer 2010 is not 2010, but 2003
CORE-8681 #resolve #comment Fixed, thx.

svn path=/trunk/; revision=65400
2014-11-13 21:18:27 +00:00
Daniel Reimer
d5c0562adf On Rapps Office Excel Viewer 2007 is called Office Excel Viewer 2010
CORE-8710 #resolve #comment Fixed, thx.

svn path=/trunk/; revision=65399
2014-11-13 21:17:15 +00:00
Hervé Poussineau
9d8e6117b2 [NTOS:FSRTL] Fix lots of problems in large MCB implementation
KM tests now pass, except one error case which is not correctly handled.

svn path=/trunk/; revision=65398
2014-11-13 20:11:05 +00:00
Hervé Poussineau
3a0448b448 [NTOS:FSRTL] Stub-implement oplock and tunnel functions
svn path=/trunk/; revision=65397
2014-11-13 20:11:00 +00:00
Hervé Poussineau
942a7e9457 [NTOS:SE] Fix SeValidSecurityDescriptor
svn path=/trunk/; revision=65396
2014-11-13 20:10:52 +00:00
Amine Khaldi
81dea422f6 * Sync up to trunk head (r65394).
svn path=/branches/shell-experiments/; revision=65395
2014-11-13 19:27:12 +00:00
David Quintana
4b0ff82950 [SYSSETUP]
* Use the right function for the fix.

svn path=/branches/shell-experiments/; revision=65394
2014-11-13 17:11:07 +00:00
David Quintana
70bd9e70f3 [SYSSETUP]
* Fix some icons not appearing. The desktop one for "Command Prompt" still appears on the SYSTEM folder instead of the Default User one somehow.

svn path=/branches/shell-experiments/; revision=65393
2014-11-13 17:03:15 +00:00
Timo Kreuzer
79965b20db [WIN32K]
Round to nearest integer in FIX2LONG, used in XFORMOBJ APIs. Fixes rounding errors when doing coordinate transformation.

svn path=/trunk/; revision=65392
2014-11-13 11:12:56 +00:00
Timo Kreuzer
d8b68f3d7b [FREELDR]
Remove explicit comparisons with TRUE
i.e. if (BooleanValue == TRUE) -> if (BooleanValue) (and not !BooleanValue as accidentally written in the previous commit message!)
Patch by Love Nystrom
CORE-8799

svn path=/trunk/; revision=65391
2014-11-13 11:00:41 +00:00
Timo Kreuzer
35b6795c92 [WIN32SS]
if (BooleanValue == TRUE) -> if (!BooleanValue)
Patch by Love Nystrom
CORE-8799

svn path=/trunk/; revision=65390
2014-11-13 10:31:45 +00:00
David Quintana
cd35aef5ab [BROWSEUI]
* Remove the unwanted "(Empty)" item from the static menu, the SF menu will add its own if needed.

[RSHELL]
* Load the "(Empty)" string from shell32 resources.

[SHELL32]
* Add the string resource for empty menus.


svn path=/branches/shell-experiments/; revision=65389
2014-11-12 17:13:05 +00:00
Timo Kreuzer
5cd320d592 [WIN32K]
Allow arbitrary transforms in NtGdiExtCreateRegion.
Shearing and rotation are not handled correctly yet, but at least we do no longer fail on transforms that have scaling and an offset, which are classified as GX_GENERAL

svn path=/trunk/; revision=65382
2014-11-12 10:15:09 +00:00
Timo Kreuzer
6ee2be9843 [GDI32_APITEST]
Fix build

svn path=/trunk/; revision=65381
2014-11-12 09:58:45 +00:00
Timo Kreuzer
a1330711d6 [GDI32_APITEST]
Add tests for ExtCreateRegion

svn path=/trunk/; revision=65380
2014-11-12 09:49:32 +00:00
Hermès Bélusca-Maïto
8cd169b5c5 [NTVDM]
- Store in bit 7 of Bda->VGAOptions (40:87) whether we needed to clear video memory (or not) when changing the video mode.
- When retrieving the current video mode, set this bit 7 as required.
- Improve a bit the DPRINT of VidBiosSetVideoMode for diagnostic purposes.
- Remove the temporary "fix" (read: hack, and it broke some apps) from r65015 / r65018 : I'm working on a real fix.
- Rework some subfunctions of the INT 10h, AH=11h function (font generator).
- Fix reporting "256 kb video memory" in the Bda->VGAOptions flag.

svn path=/trunk/; revision=65379
2014-11-11 18:44:03 +00:00
Sylvain Petreolle
29782f8dc5 [ADVAPI_WINETEST]
Make peace^W tests, not war.☮
Wave a hello to sysreg so that it doesn't kill us.
ROSTESTS-56

svn path=/trunk/; revision=65378
2014-11-11 16:12:14 +00:00
Hermès Bélusca-Maïto
77ee067aa5 [NTVDM]: Make static some variables, fix IRQ1/12 timing, use NT QueryPerformanceCounter API instead of its Win32 part and move the "while (VdmRunning && CpuRunning)" loop into ClockUpdate.
svn path=/trunk/; revision=65377
2014-11-11 15:49:56 +00:00
Hermès Bélusca-Maïto
2f840d26f8 [NTVDM]: Errm... fix the "fix": apps *must* always set AX (not AL) to a correct value before calling INT 33h. The app that wrongly set AX did it once... ^^
svn path=/trunk/; revision=65375
2014-11-11 01:57:59 +00:00
Hermès Bélusca-Maïto
4b79109382 [NTVDM]
- Disable some DPRINTs and reenable some others (those concerning programs loading).
- INT 15h, AH=C2h calls a dedicated mouse bios function, which is stubplemented.
- Move part of the HW mouse / driver hack from the HW mouse module into the BIOS mouse.
- INT 33h: s/BiosMouseService/DosMouseService/, in this interrupt we need to check for function numbers in AL (not in AX :) fixes few apps).
- Reenable mouse user handler callbacks calls in CallMouseUserHandlers.
- Some apps (e.g. the demo from http://www.brackeen.com/vga/mouse.html ) draw by themselves the cursor and do not bother to call the INT 33h "Show cursor" function, but expects that moving the mouse we report its correct position. Fix DosMouseUpdatePosition so that it always updates the stored mouse position, but redraws it only when the cursor is shown.

svn path=/trunk/; revision=65374
2014-11-11 01:40:23 +00:00
David Quintana
4f5c586905 [RSHELL]
* Make use of the CToolbar class here too.
* Fix the menubar logic for closing menus on a second click. Almost. There's some glitch when clicking too fast, that I will fix later.

svn path=/branches/shell-experiments/; revision=65373
2014-11-11 01:05:39 +00:00
Pierre Schweitzer
0440330ea6 [FASTFAT]
- Implement VPB swapout in our FAT driver for dismout (see VfatCheckForDismount)
- Dereference volume handles on close (not on cleanup)
- Keep track of the VDO in our VCB
- Let VfatCheckForDismount() do the actual dismount, instead of VfatDismountVolume() which just initiates it

CORE-8732 #comment Can you retry?

svn path=/trunk/; revision=65372
2014-11-10 22:11:36 +00:00
Amine Khaldi
545615df47 [CMAKE][NTVDM]
* There is no folder named ntvdm inside ntvdm.
* Improve some inclusions (avoid ../ types).

svn path=/trunk/; revision=65369
2014-11-10 19:47:28 +00:00
Amine Khaldi
2bf9800b96 [CMAKE][BOOTSECT]
* Improve some inclusions (avoid ../ types).

svn path=/trunk/; revision=65368
2014-11-10 19:21:06 +00:00
Pierre Schweitzer
ef570a4f3f [PARTTEST]
Add a dummy application that will open first disk and check first sector for MBR and then will open first partition to check for something known (& not MBR)

svn path=/trunk/; revision=65367
2014-11-10 18:26:34 +00:00
Pierre Schweitzer
f00ed8906d [FASTFAT]
- Store IO VPB in our VCB for later use
- Prepare a spare VPB in our VCB for dismount swapout

svn path=/trunk/; revision=65361
2014-11-10 17:42:51 +00:00
Amine Khaldi
eae27787e5 * Sync up to trunk head (r65353).
svn path=/branches/shell-experiments/; revision=65354
2014-11-10 11:20:45 +00:00
Amine Khaldi
f47cea9091 [SHELL32]
* Work on the exports a bit to match native.
* There are still cases worth inspecting, marked as FIXME.
CORE-8174

svn path=/branches/shell-experiments/; revision=65307
2014-11-07 14:26:27 +00:00
Amine Khaldi
14648f53e5 [SHELL32]
* Another partial sync of pidl.c with Wine 1.7.27.
* Move some functions where they are used, and remove some unused ones.
* Mark some of our changes with history revisions.
CORE-8540

svn path=/branches/shell-experiments/; revision=65306
2014-11-07 11:30:38 +00:00
Amine Khaldi
fc98679849 [SHELL32]
* Another partial sync of pidl.c with Wine 1.7.27.
* Move SHParseDisplayName where it belongs.
CORE-8540

svn path=/branches/shell-experiments/; revision=65305
2014-11-07 10:53:10 +00:00
Amine Khaldi
e8103dd4d3 * Sync up to trunk head (r65298).
svn path=/branches/shell-experiments/; revision=65299
2014-11-06 19:24:18 +00:00
Amine Khaldi
2060ee5d9c [SHELL32]
* Another partial sync of brsfolder.c with Wine 1.7.27.
CORE-8540

svn path=/branches/shell-experiments/; revision=65298
2014-11-06 19:14:58 +00:00
Amine Khaldi
1bf6f2b179 [SHELL32]
* Partial sync of shell32_main.h with Wine 1.7.27.
CORE-8540

svn path=/branches/shell-experiments/; revision=65296
2014-11-06 18:45:30 +00:00
Amine Khaldi
9f5ca3848b [SHELL32]
* Another partial sync of clipboard.c with Wine 1.7.27.
* Move RenderPREFEREDDROPEFFECT to CIDLDataObj.cpp where it belongs.
CORE-8540

svn path=/branches/shell-experiments/; revision=65294
2014-11-06 18:33:33 +00:00
Amine Khaldi
98ab989c82 [SHELL32]
* Partial sync of clipboard.c with Wine 1.7.27.
CORE-8540

svn path=/branches/shell-experiments/; revision=65293
2014-11-06 18:10:37 +00:00
Amine Khaldi
4a6b43ac42 [SHELL32]
* Move clipboard.cpp to the wine folder.
* Convert clipboard.cpp into clipboard.c.

svn path=/branches/shell-experiments/; revision=65292
2014-11-06 18:07:58 +00:00
Amine Khaldi
0f56f8c10c [SHELL32]
* Another partial sync of classes.c with Wine 1.7.27.
CORE-8540

svn path=/branches/shell-experiments/; revision=65291
2014-11-06 17:26:42 +00:00
Amine Khaldi
d6cf4f43aa [SHELL32]
* Partial sync of classes.c with Wine 1.7.27.
CORE-8540

svn path=/branches/shell-experiments/; revision=65290
2014-11-06 16:58:43 +00:00
Amine Khaldi
68ba7b8c1b [SHELL32]
* Move classes.cpp to the wine folder.
* Convert classes.cpp into classes.c.

svn path=/branches/shell-experiments/; revision=65289
2014-11-06 16:49:41 +00:00
Amine Khaldi
4b78f524f2 [SHELL32]
* Another partial sync of changenotify.c with Wine 1.7.27.
CORE-8540

svn path=/branches/shell-experiments/; revision=65288
2014-11-06 16:35:20 +00:00
Amine Khaldi
0bf0ff1e78 [SHELL32]
* Partial sync of changenotify.c with Wine 1.7.27.
CORE-8540

svn path=/branches/shell-experiments/; revision=65287
2014-11-06 16:11:48 +00:00
Amine Khaldi
9cb0bb8edd [SHELL32]
* Move changenotify.cpp to the wine folder.
* Convert changenotify.cpp into changenotify.c.

svn path=/branches/shell-experiments/; revision=65286
2014-11-06 16:01:10 +00:00
Amine Khaldi
2b4b0b0af6 [SHELL32]
* Another partial sync of shlmenu.c with Wine 1.7.27.
CORE-8540

svn path=/branches/shell-experiments/; revision=65285
2014-11-06 13:04:41 +00:00
Amine Khaldi
fffb400d3a [SHELL32]
* Partial sync of shlmenu.c with Wine 1.7.27.
CORE-8540

svn path=/branches/shell-experiments/; revision=65284
2014-11-06 12:57:39 +00:00
Amine Khaldi
ad2ed830be [SHELL32]
* Move shlmenu.cpp to the wine folder.
* Convert shlmenu.cpp into shlmenu.c.

svn path=/branches/shell-experiments/; revision=65283
2014-11-06 12:45:07 +00:00
Amine Khaldi
2aebe831cb [SHELL32]
* Apply Wine commit bfad4fa9 by Piotr Caban: Don't convert output parameter in SHBrowseForFolderA (Valgrind).
CORE-8540

svn path=/branches/shell-experiments/; revision=65282
2014-11-06 11:25:43 +00:00
David Quintana
7d0ca528ce [EXPLORER-NEW]
* Use IContextMenu for the context menus, instead of a struct with function pointers.

svn path=/branches/shell-experiments/; revision=65279
2014-11-06 03:05:33 +00:00
David Quintana
fb929febc6 [COMCTL32]
* Begin implementing TB_GETMETRICS/TB_SETMETRICS. Will send to wine once the button spacing setting works (after writing tests and whatever else may be necessary).

svn path=/branches/shell-experiments/; revision=65275
2014-11-05 23:00:23 +00:00
David Quintana
a2cc12f3e7 [EXPLORER-NEW]
* Make use of the CToolbar<T> class to implement a CTaskToolbar.
* Change the CTaskSwitchWnd class to use CTaskToolbar instead of managing the HWND directly.
* Silence logspam in CTrayBandSite.
* Fix CNotifyToolbar to properly.
* Move the call to SetMetrics to be called only on initialization, instead of every time an icon changes.
* Make the start button a CContainedWindowT instead of a raw HWND. TODO: Make a CStartButton class to manage it.

[include/reactos/rosctrls.h]
* Some improvements needed by the taskbar.

svn path=/branches/shell-experiments/; revision=65274
2014-11-05 22:58:53 +00:00
Amine Khaldi
2c30ae43b0 * Sync up to trunk head (r65270).
svn path=/branches/shell-experiments/; revision=65271
2014-11-05 19:33:30 +00:00
Amine Khaldi
1ed1e48cd2 [SHELL32]
* Another partial sync of brsfolder.c with Wine 1.7.27.
CORE-8540

svn path=/branches/shell-experiments/; revision=65267
2014-11-05 17:04:42 +00:00
Amine Khaldi
b269ecaffd [SHELL32]
* Partial sync of brsfolder.c with Wine 1.7.27.
CORE-8540

svn path=/branches/shell-experiments/; revision=65251
2014-11-04 20:13:22 +00:00
Amine Khaldi
4190d21c43 [SHELL32]
* Move brsfolder.cpp to the wine folder.
* Convert brsfolder.cpp into brsfolder.c.

svn path=/branches/shell-experiments/; revision=65250
2014-11-04 20:10:43 +00:00
Amine Khaldi
d05db38784 [SHELL32]
* bool => BOOL.

svn path=/branches/shell-experiments/; revision=65249
2014-11-04 20:00:09 +00:00
Giannis Adamopoulos
a5bcd416fb [SHELL32]
Rename cpp files to the name of the class they implement

svn path=/branches/shell-experiments/; revision=65246
2014-11-04 13:28:57 +00:00
Giannis Adamopoulos
dee95b2a3f [SHELL32]
- Rename IFileSystemBindDataImpl to CFileSysBindData
- Rename IconExtraction to CExtractIcon
- Rename IEnumIDListImpl to CEnumIDListBase
- Rename IDataObjectImpl to CIDLDataObj

svn path=/branches/shell-experiments/; revision=65245
2014-11-04 12:49:36 +00:00
Giannis Adamopoulos
bc9009dda3 [SHELL32]
- Simplify CMyDocsFolder folder to use a CFSFolder internally
- Note that while CAdminToolsFolder and CFontsFolder should aggregate CFSFolder, CMyDocsFolder shouldn't and this is implementation is much closer to windows.

svn path=/branches/shell-experiments/; revision=65243
2014-11-04 11:45:05 +00:00
Giannis Adamopoulos
75ae835000 [SHELL32]
- Make CFontsFolder a dumb wrapper around CFSFolder

svn path=/branches/shell-experiments/; revision=65236
2014-11-03 21:14:49 +00:00
Amine Khaldi
d7ca29bc06 [SHELL32]
* Another partial sync of pidl.c and pidl.h with Wine 1.7.27.
CORE-8540

svn path=/branches/shell-experiments/; revision=65235
2014-11-03 20:15:17 +00:00
Amine Khaldi
8c29f2837c [SHELL32]
* Partial sync of pidl.c and pidl.h with Wine 1.7.27.
CORE-8540

svn path=/branches/shell-experiments/; revision=65234
2014-11-03 19:58:55 +00:00
Amine Khaldi
6069abeef0 [SHELL32]
* Move pidl.cpp and pidl.h to the wine folder.
* Convert pidl.cpp into pidl.c.
CORE-8540

svn path=/branches/shell-experiments/; revision=65233
2014-11-03 19:50:36 +00:00
Amine Khaldi
6a6f52bf66 [SHELL32]
* Move shellreg.cpp to the wine folder.
* Rename shellreg.cpp to shellreg.c.
* Sync shellreg.c with Wine 1.7.27.
CORE-8540

svn path=/branches/shell-experiments/; revision=65232
2014-11-03 19:05:48 +00:00
Amine Khaldi
0f48f23d19 [SHELL32]
* Another partial sync of shellord.c with Wine 1.7.27.
CORE-8540

svn path=/branches/shell-experiments/; revision=65231
2014-11-03 18:53:50 +00:00
Amine Khaldi
8e1cdffb62 [SHELL32]
* Partial sync of shellord.c with Wine 1.7.27.
CORE-8540

svn path=/branches/shell-experiments/; revision=65230
2014-11-03 18:21:49 +00:00
Amine Khaldi
ae35d57677 [SHELL32]
* Move shellord.cpp to the wine folder.
* Convert shellord.cpp into shellord.c.
CORE-8540

svn path=/branches/shell-experiments/; revision=65229
2014-11-03 18:09:50 +00:00
Giannis Adamopoulos
768eecf19e [SHELL32]
- Begin improving our shell folders implementation
- CAdminToolsFolder is just a fancy CFSFolder so there is no need to reinvent the wheel
- Use a real CFSFolder to do all the work. When ATL aggregation works, we will be able to make this prettier
- Keep a small hack in CAdminToolsFolder::GetDisplayNameOf which returns the folder's name (I need to investigate if this is correct or not)

svn path=/branches/shell-experiments/; revision=65228
2014-11-03 16:41:20 +00:00
David Quintana
98bc7ac7c8 [EXPLORER-NEW]
* Move the CToolbar class into rosctrls.h, so we can make use of it in other parts of reactos.

svn path=/branches/shell-experiments/; revision=65226
2014-11-03 16:05:09 +00:00
David Quintana
c6b81aa43b [EXPLORER-NEW]
* Fix GCC build.

svn path=/branches/shell-experiments/; revision=65225
2014-11-03 15:06:54 +00:00
Amine Khaldi
370a6f8dc3 [SHELL32]
* Move control.cpp to the wine folder.
* Rename control.cpp to control.c.
* Partially sync control.c with Wine 1.7.27.
CORE-8540

svn path=/branches/shell-experiments/; revision=65224
2014-11-03 14:36:57 +00:00
Amine Khaldi
fd9f0d8b86 [SHELL32]
* Move shpolicy.cpp to the wine folder.
* Rename shpolicy.cpp to shpolicy.c.
* Sync shpolicy.c with Wine 1.7.27.
CORE-8540

svn path=/branches/shell-experiments/; revision=65223
2014-11-03 13:59:23 +00:00
Amine Khaldi
e24032eb8c [SHELL32]
* Apply Wine commit e330a128 by Alexandre Julliard: Use Shell_GetImageLists to retrieve image lists instead of using a global variable.
CORE-8540

svn path=/branches/shell-experiments/; revision=65222
2014-11-03 13:43:01 +00:00
Amine Khaldi
3a9653d24e [SHELL32]
* Move shellpath.cpp to the wine folder.
* Rename shellpath.cpp to shellpath.c.
* Partially sync shellpath.c with Wine 1.7.27.
CORE-8540

svn path=/branches/shell-experiments/; revision=65221
2014-11-03 13:29:18 +00:00
Amine Khaldi
ebaefd4cf3 [SHELL32]
* Move shell32_main.cpp to the wine folder.
* Rename shell32_main.cpp to shell32_main.c.
* Partially sync shell32_main.c with Wine 1.7.27.
* Update the location of shell32_main.h in inclusions.
CORE-8540

svn path=/branches/shell-experiments/; revision=65217
2014-11-03 12:17:30 +00:00
Amine Khaldi
8b3a691a5b [SHELL]
* Mark _ILGetExtension and _ILGetFileType as EXTERN_C.
* __inline before return type.
* Some tiny style consistency fixes.

svn path=/branches/shell-experiments/; revision=65216
2014-11-03 12:13:40 +00:00
Amine Khaldi
7328a488fa [SHELL]
* __inline before return type.

svn path=/branches/shell-experiments/; revision=65215
2014-11-03 12:10:23 +00:00
Giannis Adamopoulos
afba1474ae [EXPLORER_NEW]
- Fix build

svn path=/branches/shell-experiments/; revision=65214
2014-11-03 11:33:23 +00:00
Amine Khaldi
86f440a776 [SHELL32]
* Allow shdebugstr_guid() to be used from C code too.
* Move shellole.cpp to the wine folder.
* Rename shellole.cpp to shellole.c.
* Sync shellole.c with Wine 1.7.27.
CORE-8540

svn path=/branches/shell-experiments/; revision=65213
2014-11-03 10:52:20 +00:00
Giannis Adamopoulos
2aefa1130a [SHELL32]
- Add shell32.cpp and move there CShell32Module, DllGetVersion, DllMain, DllCanUnloadNow, DllGetClassObject, DllRegisterServer, DllUnregisterServer, DllInstall, IDefClFImpl, IDefClF_fnConstructor and SHCreateDefClassObject
- Now shell32_main.cpp and shellole.cpp have code that can be converted back to C and synced to wine

svn path=/branches/shell-experiments/; revision=65212
2014-11-03 10:38:21 +00:00
Giannis Adamopoulos
ee9f3746cc [SHELL32]
- Move SHGetDesktopFolder to desktop.cpp

svn path=/branches/shell-experiments/; revision=65211
2014-11-03 10:12:24 +00:00
David Quintana
406cb9dd75 [EXPLORER-NEW]
* Rename a few I<x>Impl to C<x>
* Refactor the toolbar code of notification area into its own class.
* Also refactor away the code specific to the toolbar control into a CToolbar class. Todo: move the CToolbar class into some header file.

svn path=/branches/shell-experiments/; revision=65209
2014-11-03 04:16:56 +00:00
Giannis Adamopoulos
89af2b02ad [SHELL32]
- Remove an old todo file that described the things that were implemented in the shell-experiments branch

svn path=/branches/shell-experiments/; revision=65208
2014-11-02 23:50:54 +00:00
Giannis Adamopoulos
855e2e5a66 [SHELL32]
- Move shellstring.c to a new folder called wine. More files should be moved there eventually.

svn path=/branches/shell-experiments/; revision=65207
2014-11-02 23:41:24 +00:00
Giannis Adamopoulos
5c14d148e1 [SHELL32]
- Move files that implement dialogs and property sheets in dialogs folder

svn path=/branches/shell-experiments/; revision=65206
2014-11-02 23:30:48 +00:00
Giannis Adamopoulos
544bb81e8f [SHELL32]
- Remove authors.cpp

svn path=/branches/shell-experiments/; revision=65201
2014-11-02 22:52:49 +00:00
David Quintana
d2d3c97622 [EXPLORER-NEW]
* Refactor startmnu.cpp into three separate files. startctxmnu.cpp contains the context menu handler for the start button, and startmnusite.cpp contains the former IStartMenuSiteImpl, renamed to CStartMenuSite.

svn path=/branches/shell-experiments/; revision=65200
2014-11-02 22:26:44 +00:00
David Quintana
d2f5f7f14f [EXPLORER-NEW]
* Refactor the desktop thread/creation code.

svn path=/branches/shell-experiments/; revision=65199
2014-11-02 21:52:54 +00:00
David Quintana
162ff471bb [EXPLORER-NEW]
* Convert codebase to C++ and make use of C++ classes for the COM objects.

svn path=/branches/shell-experiments/; revision=65197
2014-11-02 20:18:54 +00:00
David Quintana
3da5418d3f [RSHELL]
[STOBJECT]
* Some nitpicking.

[SHELL32]
* Fix missing null-termination by using proper string literals.

svn path=/branches/shell-experiments/; revision=65194
2014-11-02 20:17:23 +00:00
David Quintana
3b5e160482 [SHELL32]
* Fix GCC build.

svn path=/branches/shell-experiments/; revision=65193
2014-11-02 20:13:56 +00:00
Giannis Adamopoulos
a099e6c7a2 [SHELL32]
- Remove lots of typecasts in CDefView
- Use strict typed itemids

svn path=/branches/shell-experiments/; revision=65185
2014-11-02 17:49:28 +00:00
Amine Khaldi
c472e29a70 * Sync up to trunk head (r65183).
svn path=/branches/shell-experiments/; revision=65184
2014-11-02 16:12:38 +00:00
Giannis Adamopoulos
6f1b132494 [ATL]
- Add a couple of macros needed for the time we will be able to support aggregation with ATL

svn path=/branches/shell-experiments/; revision=65182
2014-11-02 13:35:03 +00:00
Amine Khaldi
611a14d331 [SHELL32]
* Fix GCC build.

svn path=/branches/shell-experiments/; revision=65180
2014-11-02 11:16:37 +00:00
Giannis Adamopoulos
b8c49d0520 [SHELL32]
- Add an evil header that is going to simplify our C++ code in the shell a lot
- Use the new CListView in the implementation of CDefView to make it more readable and maintainable

svn path=/branches/shell-experiments/; revision=65176
2014-11-02 00:26:22 +00:00
Giannis Adamopoulos
15ba278fdd [RSHELL]
- A HACK notice was more obvious than needed (I got what I asked after all).
- Reenable opening the printers folder since it works now

svn path=/branches/shell-experiments/; revision=65161
2014-10-31 22:32:01 +00:00
Giannis Adamopoulos
f48774515c [SHELL32]
- Do not release the pointer to the ShellView that was just created 
- Fixes a crash when showing the Printers shell folder

svn path=/branches/shell-experiments/; revision=65160
2014-10-31 22:30:21 +00:00
David Quintana
827930cde2 [BROWSEUI]
* Implement hiding the statusbar from the view menu. Based on patch by Christoph von Wittich.

svn path=/branches/shell-experiments/; revision=65158
2014-10-31 18:37:40 +00:00
David Quintana
1bb0aaf50f [EXPLORER-NEW]
* Some nitpicking.

[STOBJECT]
* Fix the notification not having an assigned callback message id.

svn path=/branches/shell-experiments/; revision=65151
2014-10-31 15:57:56 +00:00
Amine Khaldi
88ae5a3afe [INCLUDE/REACTOS]
* Fix GCC build.

svn path=/branches/shell-experiments/; revision=65149
2014-10-31 15:32:05 +00:00
Amine Khaldi
6581292e05 * Sync up to trunk head (r65147).
svn path=/branches/shell-experiments/; revision=65148
2014-10-31 15:27:51 +00:00
Christoph von Wittich
15ec865f72 [EXPLORER-NEW]
fix gcc build

svn path=/branches/shell-experiments/; revision=65125
2014-10-30 19:00:19 +00:00
David Quintana
4dfef8d21d [EXPLORER_NEW]
* Cleanup some window procs.
* Fix some redraw issues in the notification area due to misuse of themeing.

svn path=/branches/shell-experiments/; revision=65124
2014-10-30 14:55:56 +00:00
Amine Khaldi
4f72545247 * Sync up to trunk head (r65120).
svn path=/branches/shell-experiments/; revision=65121
2014-10-30 11:52:53 +00:00
David Quintana
47cc151eb1 [RSHELL]
* Hopefully fix the start menu closing randomly. May have side-effects, but I think it's best to be conservative here and prefer the possibility of the menu staying open unexpectedly, rather than closing unexpectedly.

svn path=/branches/shell-experiments/; revision=65114
2014-10-29 22:50:27 +00:00
David Quintana
2e0e5f7174 [BROWSEUI]
* Allow the static items in the Favorites menu to be received by the shell browse window.
* Handle the Organize Favorites menu item by opening either the USER favorites, or the COMMON version of the folder.

[RSHELL]
* Send the proper HWND together with the HMENU, when sending callbacks.

svn path=/branches/shell-experiments/; revision=65111
2014-10-29 22:28:51 +00:00
David Quintana
5ee771bbc6 [BROWSEUI]
* Fix a 'pasta.
* Open something less stupid when clicking on "Is this copy legal?" in the Help menu.

svn path=/branches/shell-experiments/; revision=65099
2014-10-29 12:32:46 +00:00
David Quintana
a0ec7d507f [RSHELL]
* Fix assumption that the USER folder will always exist and only the COMMON folder may be missing. Allows the Start Menu to work in livecd.

[BROWSEUI]
* Apply the same fix to the Favorites folder, although the LiveCD does not currently have the folder so it will not work regardless.

svn path=/branches/shell-experiments/; revision=65098
2014-10-29 11:52:45 +00:00
Amine Khaldi
4fc224434a * Sync up to trunk head (r65095).
* Thank you Kamil for r65087 ;)

svn path=/branches/shell-experiments/; revision=65096
2014-10-29 11:25:42 +00:00
David Quintana
b06af9ef67 [BROWSEUI]
* Implement File->Close

svn path=/branches/shell-experiments/; revision=65095
2014-10-29 11:14:28 +00:00
David Quintana
d75b3832c8 [BROWSEUI]
* Implement executing the items from the Favorites menu.

svn path=/branches/shell-experiments/; revision=65094
2014-10-28 22:28:28 +00:00
David Quintana
a3006f2401 [RSHELL]
* Remove a few GCC unused-but-set-variable warnings.

svn path=/branches/shell-experiments/; revision=65092
2014-10-28 22:13:18 +00:00
David Quintana
40a2e03359 [RSHELL]
* CMenuBand: Refcount before assigning a return pointer.
* CMenuDeskBar: Revert change and protect the refcounting in case I was wrong to assume there will be exactly one OnFinalMessage for each OnCreate.
* CMenuToolbars: Add a debug message.
* CStartMenu: Refcount correctly.

svn path=/branches/shell-experiments/; revision=65088
2014-10-28 21:40:50 +00:00
Giannis Adamopoulos
6dce3d956e Revert unwanted change
svn path=/branches/shell-experiments/; revision=65084
2014-10-28 19:52:04 +00:00
Giannis Adamopoulos
b763819882 [RSHELL]
- Do not release CMenuDeskBar more times than necessary
- Should fix the start menu

svn path=/branches/shell-experiments/; revision=65083
2014-10-28 19:50:49 +00:00
David Quintana
41e4833e4e [BROWSEUI]
* Disable the Tools menu items until they are implemented.

svn path=/branches/shell-experiments/; revision=65081
2014-10-28 18:37:44 +00:00
David Quintana
a2eba5b034 [BROWSEUI]
* Properly return the toolbar status on QueryStatus.
* Properly make use of the returned into from QueryStatus.

svn path=/branches/shell-experiments/; revision=65080
2014-10-28 18:32:21 +00:00
David Quintana
210edd7588 Fix GCC build.
svn path=/branches/shell-experiments/; revision=65078
2014-10-28 17:33:22 +00:00
Amine Khaldi
3899f1daa8 * Sync up to trunk head (r65074).
svn path=/branches/shell-experiments/; revision=65075
2014-10-28 16:58:25 +00:00
David Quintana
30a510975b [RSHELL]
* Fix executing items after the menu has closed.

svn path=/branches/shell-experiments/; revision=65074
2014-10-28 15:39:47 +00:00
Giannis Adamopoulos
180b6fb083 [STOBJECT]
- Disable querying if audio is muted or not for now.
- Hides an assert that happened in wdmaud.drv

svn path=/branches/shell-experiments/; revision=65073
2014-10-28 15:27:00 +00:00
Giannis Adamopoulos
5273a84a3f [SHELL32]
- Return a readable folder name when SHGDN_FORADDRESSBAR was specified
- We no longer show GUIDs in the address bar 

svn path=/branches/shell-experiments/; revision=65072
2014-10-28 15:07:31 +00:00
Giannis Adamopoulos
6dfa5325d0 [RSHELL]
- Actually give focus to the start menu when CMenuDeskBar::Popup is called
- Fixes opening and navigating the start menu with the keyboard

svn path=/branches/shell-experiments/; revision=65071
2014-10-28 14:31:19 +00:00
Giannis Adamopoulos
6f9dab8a15 [EXPLORER_NEW]
- Use IMenuPopup_OnSelect to close the start menu when the win key is pressed. 
- Fixes closing the start menu (on windows and on reactos)

svn path=/branches/shell-experiments/; revision=65070
2014-10-28 14:18:16 +00:00
Giannis Adamopoulos
2c619c6486 [WIN32K]
- Send the HSHELL_TASKMAN notification to the shell when the windows key is pressed
- Needed to open and close the start menu with the keyboard

svn path=/branches/shell-experiments/; revision=65069
2014-10-28 13:45:43 +00:00
David Quintana
dc1da96ab8 [RSHELL]
* Fix some small things that were getting in the way of fixing the start menu (which was broken and no one noticed). The actual fix will come tomorrow since my brain is about to implode at this time.

svn path=/branches/shell-experiments/; revision=65065
2014-10-28 01:27:02 +00:00
Giannis Adamopoulos
c199f8be2e [SHELL32]
- Properly check for error in CDefaultContextMenu::DoCreateLink

svn path=/branches/shell-experiments/; revision=65064
2014-10-28 00:58:19 +00:00
Giannis Adamopoulos
a5597dfcc1 [win32k]
- Revert a recent change in trunk that broke the new shell. Its a shame to see the new shell behave like crap because of win32k

svn path=/branches/shell-experiments/; revision=65057
2014-10-27 23:49:06 +00:00
Giannis Adamopoulos
afb6acc945 [SHELL32]
- Rewrite the monstrosity that was supposed to open control panel items. Still not really correct but works.

svn path=/branches/shell-experiments/; revision=65051
2014-10-27 18:26:09 +00:00
Giannis Adamopoulos
37ebd8e1e4 [BEOWSEUI]
- Simplify shellbrowser.cpp a bit

svn path=/branches/shell-experiments/; revision=65038
2014-10-27 00:39:53 +00:00
Giannis Adamopoulos
a4feb3fb65 [BROWSUI]
- Fix CAddressBand::Invoke to correctly detect if an item exists in the list and select the correct item when it does.
- Improve CAddressEditBox::Execute to check if the passed pidl is the one that is being displayed.
- Also fix it to parse the path if needed.
- Directly call CAddressEditBox::Execute when enter is pressed or the Go button is pressed
- Should fix most issues with the address bar

svn path=/branches/shell-experiments/; revision=65036
2014-10-26 23:46:35 +00:00
Giannis Adamopoulos
dffea1c618 [browseui]
- Improve CBaseBar::TranslateAcceleratorIO stub
- Returning always TRUE means that creating a basebar ended up eating all messages
- Fixes the hang that happened when we clicked on the folders button in the toolbar

svn path=/branches/shell-experiments/; revision=65020
2014-10-26 17:16:19 +00:00
David Quintana
f99f83df93 [BROWSEUI]
* Sidebars are not implemented, but it's ok. No need to force a debug break in there.

svn path=/branches/shell-experiments/; revision=65019
2014-10-26 17:06:58 +00:00
Giannis Adamopoulos
845a63443c [user32]
- Properly notify the theme engine that the caption needs to be repainted on WM_SETICON
- Fixes a classic frame appearing when themes are enabled and we navigate to a different folder

svn path=/branches/shell-experiments/; revision=65001
2014-10-26 00:58:52 +00:00
Amine Khaldi
23298ac30c * Sync up to trunk head (r64995).
svn path=/branches/shell-experiments/; revision=64996
2014-10-25 19:46:12 +00:00
David Quintana
d07a1dc09a [EXPLORER-NEW]
* Fix HMENU leak.

[BROWSEUI]
* Work around for WM_SETICON not properly returning the old HICON.

[SHELL32]
* Fix HICON leak.
* Nitpick.

[WIN32K]
* Do not refcount the menus improperly.

svn path=/branches/shell-experiments/; revision=64986
2014-10-25 15:44:11 +00:00
Amine Khaldi
8069b8c90d * Sync up to trunk head (r64959).
svn path=/branches/shell-experiments/; revision=64961
2014-10-24 16:06:58 +00:00
David Quintana
fa016aa3a8 [RSHELL]
* Fix HMENU leak in menu-based shell popups (and menubar).

svn path=/branches/shell-experiments/; revision=64960
2014-10-24 16:03:58 +00:00
David Quintana
108d7f2057 Sync up to trunk HEAD (r64942).
svn path=/branches/shell-experiments/; revision=64943
2014-10-23 20:48:15 +00:00
Amine Khaldi
8039ce5b7d * Sync up to trunk head (r64939).
svn path=/branches/shell-experiments/; revision=64941
2014-10-23 19:52:45 +00:00
David Quintana
ac06c3cf99 [BROWSEUI]
* Fix icon leak of the returned old icon from WM_SETICON.

[RSHELL]
* Add two debug prints (not hit).

[FILEBROWSER]
[EXPLORER-NEW]
* Free PWSTR pointers after exiting.

svn path=/branches/shell-experiments/; revision=64940
2014-10-23 19:50:29 +00:00
David Quintana
1cd79168e1 [RSHELL]
* CMenuBand: Increase the refcount of m_smc before returning it.
* CMenuBand: Improve the closing logic so that the object is reusable when it needs to be, and can still be released properly.
* CMenuDeskBar: Protect self against unexpected termination.
* CMenuFocusManager: Refcount objects that are being used.
* CStartMenu: Properly release the created objects after it's done using them (by using CComPtr instead of raw pointers).

[BROWSEUI]
* AddressBand: Release the addressband site when closing the band.
* InternetToolbar: Do not filter away ALL the items of the favorites folder.
* InternetToolbar: Do not AddRef a CComPtr that already did the refcounting itself.

CORE-8690

svn path=/branches/shell-experiments/; revision=64929
2014-10-23 17:17:16 +00:00
Amine Khaldi
121e60dbda * Sync up to trunk head (r64921).
svn path=/branches/shell-experiments/; revision=64922
2014-10-23 12:17:44 +00:00
Amine Khaldi
06e986393a * Sync up to trunk head (r64894).
svn path=/branches/shell-experiments/; revision=64895
2014-10-22 17:07:43 +00:00
David Quintana
a44f907d52 [USER32]
* Fix wrong array length passed to GetClassNameW. CID 716222
* Replace other instances of explicit array length to GetWindowTextW with _countof(x).
Based on a patch by Christoph von Wittich.

svn path=/branches/shell-experiments/; revision=64866
2014-10-21 13:32:00 +00:00
David Quintana
9abc368186 [EXPLORER-NEW]
* Cleanup in case of error. CID 1248426

[RSHELL]
* Add uninitialized class fields. CID 1248477
* Avoid leaking memory. CID 1248438

[BROWSEUI]
* Fix potential overwriting of a variable. CID 716363
* Save the rshell handle instead of loading it every time. CID 1248435
* Fix leaked PIDL. CID 1248418 

[SHELL32]
* Fix GCC build. And one small nickpick that has been bothering me for a long time.

svn path=/branches/shell-experiments/; revision=64864
2014-10-21 12:24:15 +00:00
David Quintana
96cdae0a7c [BROWSEUI]
* SHOnCWMCommandLine: Fix IETHREADPARAM leak.

[SHELL32]
* Fix HMENU leak of the popup used in the view mode button of the toolbar.

[RSHELL]
* Undo a previous change to help debug the leaks.
* Remove child submenus when closing a menu band.
* Add some extra verification for debugging purposes. 

[BROWSEUI]
[RSHELL]
[SHELL32]
* Move ReleaseCComPtrExpectZero to the shared header.

svn path=/branches/shell-experiments/; revision=64858
2014-10-20 21:35:22 +00:00
David Quintana
b138a8620d [EXPLORER-NEW]
* Initialize struct contents to zero. CID 1102492

[BROWSEUI]
* Fix build.

svn path=/branches/shell-experiments/; revision=64857
2014-10-20 21:23:32 +00:00
David Quintana
fd029c9779 [RSHELL]
[SHELL32]
[BROWSEUI]
* Move undocshell.h to a shared location, and move some shared utility functions into it.
* Replace all the COM object constructor functions with generic equivalents.
* Fixes a big bunch of "problems" found by Coverity Scan, but I don't have the list of CID at the moment.

svn path=/branches/shell-experiments/; revision=64854
2014-10-20 21:09:55 +00:00
Amine Khaldi
609ba8d717 * Sync up to trunk head (r64829).
svn path=/branches/shell-experiments/; revision=64830
2014-10-19 18:45:40 +00:00
David Quintana
11bbfc4a0b [RSHELL]
* Actually send an OnSelect message right before executing the menu items. Fixes the problem where going to start->shutdown would keep the start menu open in the background.

svn path=/branches/shell-experiments/; revision=64727
2014-10-13 16:09:57 +00:00
David Quintana
ec0cfbe374 [MSGINA]
* Fix an exception in the shutdown dialog that was silently eaten by the window proc.

svn path=/branches/shell-experiments/; revision=64725
2014-10-13 16:07:19 +00:00
Amine Khaldi
87f3265217 * Sync up to trunk head (r64716).
svn path=/branches/shell-experiments/; revision=64718
2014-10-13 12:23:44 +00:00
David Quintana
e052b025f2 [SHELL32]
* Fix another comment.
* Fix a cch/cb bug.
* Make use of the DSA_DestroyCallback function instead of messing around with the internals of the DSA.
CORE-8564

svn path=/branches/shell-experiments/; revision=64646
2014-10-09 12:54:29 +00:00
David Quintana
bd7fc320f2 Note to self: Flush mind before committing.
svn path=/branches/shell-experiments/; revision=64631
2014-10-09 00:13:05 +00:00
David Quintana
4adeeffd92 [SHELL32]
* Rewrite SHFileOperationA using human-readable code.
CORE-8564

svn path=/branches/shell-experiments/; revision=64630
2014-10-09 00:10:20 +00:00
David Quintana
13c5c447a2 [RSHELL]
[BROWSEUI]
* Add some traces

[SHELL32]
* Implement displaying the View popup from the toolbar. 

svn path=/branches/shell-experiments/; revision=64596
2014-10-08 15:25:52 +00:00
David Quintana
247aff1fe6 [BROWSEUI]
* Fix opening folder windows on desktop process.

svn path=/branches/shell-experiments/; revision=64580
2014-10-07 20:23:52 +00:00
David Quintana
1147974a95 [RSHELL]
* Work around shellexecute not handling GUID path components by giving them to explorer as a cmdline parameter.
* NOTE: The Printers and Faxes option is temporarily disabled because it CRASHES explorer-new.

svn path=/branches/shell-experiments/; revision=64579
2014-10-07 14:45:32 +00:00
David Quintana
d9f777ce1c [FILEBROWSER]
* Always open separate.

[BROWSEUI]
* Use the threadref IUnknown for reference counting in the browser threads.

svn path=/branches/shell-experiments/; revision=64578
2014-10-07 14:40:33 +00:00
David Quintana
db5b0c31c4 Sync with trunk r64509.
svn path=/branches/shell-experiments/; revision=64510
2014-10-03 19:20:19 +00:00
David Quintana
b4c329189a [MSGINA]
* We don't keep changelogs in the file headers anymore. That's what the SVN commit history is for.
CORE-7559

svn path=/branches/shell-experiments/; revision=64406
2014-09-29 21:49:42 +00:00
David Quintana
da3e45f868 * Sync with trunk r64401.
svn path=/branches/shell-experiments/; revision=64405
2014-09-29 21:34:53 +00:00
David Quintana
36f8c65080 Stupid SVN doesn't add new files to the working cope when importing a patch, for some reason I can't comprehend.
svn path=/branches/shell-experiments/; revision=64404
2014-09-29 20:22:22 +00:00
David Quintana
257a0de098 [MSGINA]
[SHELL32]
 * Implement shell shutdown using a proper shutdown dialog. Patch by Lee Schroeder with a small change to fix MSVC build.
CORE-7559 #comment Commited into shell-experiments branch r64403. 

svn path=/branches/shell-experiments/; revision=64403
2014-09-29 20:14:21 +00:00
David Quintana
6aaa167a00 [RSHELL]
* Implement skeleton shell dde parser.

[SHELL32]
* Copy over the skeleton from rshell, and fill in the handlers for ViewFolder and ExploreFolder, with rudimentary implementations.

CORE-7552

svn path=/branches/shell-experiments/; revision=64395
2014-09-29 16:22:21 +00:00
Amine Khaldi
42040abadc * Sync up to trunk head (r64377).
svn path=/branches/shell-experiments/; revision=64380
2014-09-28 20:18:27 +00:00
Amine Khaldi
840c5ea8f7 [FILEBROWSER]
* Fix build.

svn path=/branches/shell-experiments/; revision=64377
2014-09-28 19:18:34 +00:00
David Quintana
1e44d47830 [BROWSEUI]
* Implement SHCreateFromDesktop and supporting functions, and move those implementations to their own file.

[SHELL32]
* Handle message 1035 from the desktop window.

[SHLWAPI]
* Fix a bug in SHAllocShared, where source and destination parameters were reversed.

[EXPLORER-NEW]
* Use SHCreateFromDesktop to open the new window.

NOTE: There appears to be some more problems with the SH*Shared implementation, beyond the swapped parameters, which prevent the opening of the new windows. These functions will have to be revised and the corrected implementation sent to WINE.

svn path=/branches/shell-experiments/; revision=64314
2014-09-26 14:47:07 +00:00
David Quintana
1bc1185f8a Sync with trunk r64222.
svn path=/branches/shell-experiments/; revision=64225
2014-09-22 12:51:09 +00:00
Amine Khaldi
18a81d5d1e [SHELL-EXPERIMENTS]
* Sync up to trunk head (r64124).

svn path=/branches/shell-experiments/; revision=64126
2014-09-12 19:21:19 +00:00
David Quintana
9c947e10d2 [EXPLORER-NEW]
* Fix GCC build

svn path=/branches/shell-experiments/; revision=64125
2014-09-12 12:44:28 +00:00
David Quintana
e70e3650ed [EXPLORER-NEW]
* <+smiley1_> could you please create a subroutine for that?

svn path=/branches/shell-experiments/; revision=64109
2014-09-10 17:26:47 +00:00
David Quintana
f6f5fd7017 [EXPLORER-NEW]
* Implement Taskbar auto-hide. The setting dialog does not work, though, so in order to enable it you need to change the StuckRects2 registry key so that the Settings value has the right bit set to 1 (or import from a Windows installation).

svn path=/branches/shell-experiments/; revision=64089
2014-09-09 14:58:38 +00:00
David Quintana
f14740e5e5 [EXPLORER-NEW]
* CMakeLists.txt: tabs to spaces

svn path=/branches/shell-experiments/; revision=64084
2014-09-08 14:04:49 +00:00
David Quintana
7ba3245a29 [PSDK]
* Make shlwapi_undoc.h compatible with C code.

[EXPLORER-NEW]
* Link with browseui.
* Use SHOpenNewFrame linked from browseui instead of explicitly loaded.
* Make use of SHExplorerParseCmdLine. Does not yet open windows in an existing process when used through commandline.

svn path=/branches/shell-experiments/; revision=64083
2014-09-08 13:09:19 +00:00
David Quintana
34158fc46f [BROWSEUI]
* Initial implementation of the explorer command line parser. Not used by explorer-new, yet.

svn path=/branches/shell-experiments/; revision=64081
2014-09-08 01:59:18 +00:00
David Quintana
4c1828ea4b Sync with trunk r63935.
svn path=/branches/shell-experiments/; revision=63939
2014-08-24 15:10:11 +00:00
David Quintana
2a5013a68f [EXPLORER-NEW]
* Turn a couple DbgPrints into ERR.

svn path=/branches/shell-experiments/; revision=63935
2014-08-24 14:06:41 +00:00
David Quintana
2351bdda50 [RSHELL]
* Add a shell DDE skeleton, based on shell32's DDE stubs.

svn path=/branches/shell-experiments/; revision=63934
2014-08-24 14:04:42 +00:00
David Quintana
6ebc10fb3c [EXPLORER-NEW]
* Make use of the wine debug functions and turn DbgPrints into TRACE/WARN/ERR.

[SHELL32]
* Turn some DbgPrints into TRACEs.

svn path=/branches/shell-experiments/; revision=63912
2014-08-20 16:19:00 +00:00
David Quintana
e9c5285a7c [SHELL32]
* Unbreak context menus.

svn path=/branches/shell-experiments/; revision=63911
2014-08-20 15:39:13 +00:00
David Quintana
117eba9bd5 [SHELL32]
* Another batch of interface pointers converted to CComPtr.

svn path=/branches/shell-experiments/; revision=63909
2014-08-20 12:25:09 +00:00
David Quintana
ef04ff090e [SHELL32]
* Stop using the C defines LPSHELLFOLDER, LPSHELLVIEW and LPUNKNOWN, and use the respective C++ interfaces instead.
* Change one batch of COM interface pointers into CComPtr-based pointers, and remove associated Release calls (including at least one that was not supposed to be there at all).
* Remove a couple (repeated multiple times) pointless casts.

svn path=/branches/shell-experiments/; revision=63908
2014-08-20 00:39:40 +00:00
David Quintana
a5ce7500a1 [SHELL32]
* Giannis found another similar case of double-releasing.

svn path=/branches/shell-experiments/; revision=63907
2014-08-19 22:30:12 +00:00
David Quintana
f7ee35aba7 [SHELL32]
* Fix a CComPtr double-release.

svn path=/branches/shell-experiments/; revision=63906
2014-08-19 22:25:40 +00:00
David Quintana
9ea7e65b5b [BROWSEUI]
[SHELL32]
* Fix accelerator handling.
* Disallow accelerators if renaming.

svn path=/branches/shell-experiments/; revision=63905
2014-08-19 21:30:04 +00:00
David Quintana
8535491b89 [STOBJECT]
* Fix MSVC build (missing newline at end of resource include file).

svn path=/branches/shell-experiments/; revision=63900
2014-08-17 17:08:24 +00:00
David Quintana
1fefb70fd0 [SHELL32]
* Remove an obsolete hack that would only cause leaks now.

svn path=/branches/shell-experiments/; revision=63892
2014-08-15 10:59:23 +00:00
David Quintana
10f8913d70 [STOBJECT]
* Turn some debug prints to traces.
* New resources by Robert Naumann, for future use.

svn path=/branches/shell-experiments/; revision=63891
2014-08-15 10:49:04 +00:00
David Quintana
b77b9b9b7d Sync with trunk r63887.
svn path=/branches/shell-experiments/; revision=63888
2014-08-14 23:55:08 +00:00
David Quintana
810048d98e Sync with trunk r63878.
svn path=/branches/shell-experiments/; revision=63879
2014-08-13 18:16:14 +00:00
David Quintana
6f51eb4048 [SHELL32]
* Make non-desktop shell views always show selections (even while unfocused).

svn path=/branches/shell-experiments/; revision=63869
2014-08-11 22:06:12 +00:00
David Quintana
930d7fff14 [BROWSEUI]
* Fix usage of outdated CMergedFolder to use the proper interface.

svn path=/branches/shell-experiments/; revision=63847
2014-08-09 15:56:05 +00:00
David Quintana
a2cfa8dc58 * Sync to trunk r63845.
svn path=/branches/shell-experiments/; revision=63846
2014-08-09 14:15:16 +00:00
David Quintana
c3558fc84a [SHELL32]
* Populate edit and view menu on first activation. TODO: enable/disable edit menu items in OnInitMenuPopup.
* Add Edit menu to resources (en-US only, other langs TODO)
* Repurpose BuildFileMenu to build the menu for the selection. This needs improvements as it uses all the items from the context menu at the moment.
* Add items to the File menu when shown.

svn path=/branches/shell-experiments/; revision=63836
2014-08-07 15:21:24 +00:00
David Quintana
a4bc6818ab [SHELL32]
* Improve the view menu handler a bit. Now the view menu properly marks the current view as expected.

svn path=/branches/shell-experiments/; revision=63811
2014-08-05 01:15:41 +00:00
David Quintana
d13da089e5 [BROWSEUI]
* Find the menu index so that the forwarded WM_INITMENUPOPUP has all the info shell32 needs.

[SHELL32]
* Begin implementing dynamic menu editing, which is used by the shell views in order to change, add or remove items from the filebrowser menus. Some menu items may be temporarily lost until this is finished.

svn path=/branches/shell-experiments/; revision=63809
2014-08-04 21:19:22 +00:00
David Quintana
7292674928 [STOBJECT]
* Fix DllMain not being called when building with gcc. Apparently msvc makes DllMain extern "C" even if you didn't ask for it, unlike gcc.
* Simplify some code.

svn path=/branches/shell-experiments/; revision=63791
2014-07-31 12:36:40 +00:00
David Quintana
56aab7f365 [STOBJECT]
* Move this shell extension to the shellext folder.

svn path=/branches/shell-experiments/; revision=63790
2014-07-31 11:44:21 +00:00
David Quintana
e18e41c8f5 [STOBJECT]
* Move SSO registration to the rgs file.
* Add more debug prints.

svn path=/branches/shell-experiments/; revision=63789
2014-07-31 11:29:50 +00:00
David Quintana
34a27346de Sync with trunk r63786.
svn path=/branches/shell-experiments/; revision=63788
2014-07-31 00:57:14 +00:00
David Quintana
cd1e4d2911 [STOBJECT]
* Improve code organization. 
* Add some debug prints.
* Fix some nits.

svn path=/branches/shell-experiments/; revision=63787
2014-07-30 22:08:05 +00:00
David Quintana
149d0f17d3 [STOBJECT]
* Nothing happened. No files were missing. Look elsewhere.

svn path=/branches/shell-experiments/; revision=63752
2014-07-28 13:24:56 +00:00
David Quintana
8bef9c148c [HIVESFT.INF]
* Shell service object DLLs expect the ShellServiceObjectDelayLoad key to exist.

[SYSSETUP.INF]
* Mark stobject.dll to be registered during setup.

[STOBJECT]
* Implement icon handling.
* Implement rudimentary volume icon handler.
* Allow the volume icon to show the mute status of the primary audio device.

svn path=/branches/shell-experiments/; revision=63750
2014-07-28 13:18:57 +00:00
David Quintana
e5ac3d04eb [STOBJECT]
* Create skeleton for the SysTray shell service object DLL. No tray icons are created yet.
* Tranks Robert Naumann for providing the icon resources, and some file templates.

svn path=/branches/shell-experiments/; revision=63732
2014-07-23 18:00:36 +00:00
David Quintana
c3479eb2b2 [RSHELL]
* the Programs menu is localized. Obtain it the right way.

svn path=/branches/shell-experiments/; revision=63711
2014-07-12 12:40:50 +00:00
David Quintana
88f0fb5a47 [RSHELL]
* Notify the parent menu popup when the deskbar is closing.

[EXPLORER-NEW]
* Set the button pressed when the start menu gets displayed.
* Set the button released when the start menu notifies it was closed.

svn path=/branches/shell-experiments/; revision=63710
2014-07-12 02:43:06 +00:00
David Quintana
e1b309d6de [RSHELL]
* Really fix GCC build.

svn path=/branches/shell-experiments/; revision=63709
2014-07-10 19:16:21 +00:00
David Quintana
eb28ee17c8 [RSHELL]
* Use the IAugmentedShellFolder methods instead of the old constructor.

[SHELL32]
* Fix gcc compilation.

svn path=/branches/shell-experiments/; revision=63708
2014-07-10 17:17:36 +00:00
David Quintana
791ee3e755 [RSHELL]
* Filter out the Programs item from the top list.

svn path=/branches/shell-experiments/; revision=63704
2014-07-09 23:37:02 +00:00
David Quintana
9804a12eff [RSHELL]
* Now that CMergedFolder works, try to make it more like windows.
* CMergedFolder: Declare and expose the undocumented IAugmentedShellFolder2 (all methods unimplemented yet). It will require major changes to the way I implemented it, but it will be for the best.
* CStartMenu: Make use of the real CMergedFolder in Windows 2003 (does not exist in win7).

svn path=/branches/shell-experiments/; revision=63703
2014-07-09 23:05:37 +00:00
David Quintana
0ffe346179 [RSHELL]
* CFocusManager: Try to fix some weird behaviour.
* CMergedFolder: Downgrade some prints to TRACEs, and implement a couple methods needed by some debugging code.
* Activate merged folders by default. TODO: implement the filtering of the "Programs" submenu, and use it for the real Programs menu item.

[SHELL32]
* defcontextmenu.cpp: Make a copy of the apidl array before storing it for later, since it may be a pointer to the stack which may not be available later. Fixes the merged folders not working on clicks and context menu.
* shlmenu.cpp: While debugging, I made Shell_MergeMenus closer to WINE's.

svn path=/branches/shell-experiments/; revision=63702
2014-07-09 00:42:05 +00:00
David Quintana
2ac4637056 [EXPLORER-NEW]
* Revert debugging change that shouldn't have been commited.
* Implement rudimentary tooltip support for tray icons. Does not yet work exactly like the windows does it.

svn path=/branches/shell-experiments/; revision=63685
2014-07-05 02:13:37 +00:00
David Quintana
ca65a75bf4 [EXPLORER-NEW]
* Fix a typo that broke tray notify icons.
* Implement loading of Shell Service Objects. Works in win2003 but no idea if it works in ros since we don't have any SSO implemented yet ;P

svn path=/branches/shell-experiments/; revision=63684
2014-07-05 00:35:43 +00:00
David Quintana
e362a0da43 [RSHELL]
* Handle SMSET_BOTTOM on SetShellFolder so the shell items show below the static menu.
* Downgrade some DbgPrints to TRACEs (reduces log spam).
* Add some extra debugging messages to CMergedFolder.
* Export the CMergedFolder constructor so it can be used from browseui.

[BROWSEUI]
* Use merged folders for the Favorites menu.

svn path=/branches/shell-experiments/; revision=63683
2014-07-02 14:48:21 +00:00
David Quintana
20a3d5b994 [SHELL32]
* Some start menu icons by Robert Naumann (gonzoMD) in proper size and content.

svn path=/branches/shell-experiments/; revision=63676
2014-06-30 17:04:47 +00:00
David Quintana
fd94119fa8 [RSHELL]
* Change the way the menu items are activated. Now the menubar activates on mouse down, and the other items activate on mouse up. Not everything works perfectly yet, but it will eventually allow proper usage of the shell menus by keeping the mouse button down. I believe this is also the way to go to avoid the "instant reopening" of the menus when trying to close them.

svn path=/branches/shell-experiments/; revision=63671
2014-06-29 15:42:06 +00:00
David Quintana
80c7746313 [RSHELL]
* Added IPersistFolder2 interface to CMergedFolder, per MSDN suggestion.
* Changed the way the pidl info is stored to be more clean and readable.

svn path=/branches/shell-experiments/; revision=63669
2014-06-29 13:54:08 +00:00
David Quintana
dec446e288 [RSHELL]
* Fix a 6am whoops.
* Simplify the FindPidlInList method.

svn path=/branches/shell-experiments/; revision=63659
2014-06-28 18:05:01 +00:00
David Quintana
f03fef66d1 [RSHELL]
* Implement a rudimentary but mostly functional (for start menu purposes) CMergedFolder class. It's still disabled by default because clicking on an item in a merged folder appears to fail to execute it.

svn path=/branches/shell-experiments/; revision=63658
2014-06-28 15:38:25 +00:00
David Quintana
9ebe8b2e4e [BROWSEUI]
* Make use of shell command ID macros for toolbar button IDs.

svn path=/branches/shell-experiments/; revision=63644
2014-06-25 15:56:04 +00:00
David Quintana
73d72624b0 Sync with trunk r63637.
svn path=/branches/shell-experiments/; revision=63640
2014-06-23 23:28:38 +00:00
David Quintana
dd250b33d4 [EXPLORER-NEW]
* Disregard the restricted setting and always remove the Search menu from the start menu. When Search is implemented, it can be reenabled.

svn path=/branches/shell-experiments/; revision=63639
2014-06-23 23:04:55 +00:00
David Quintana
70d0028281 [EXPLORER-NEW]
* Implement a rudimentary "Help and Support" start menu item by launching the default browser with http://reactos.org/ as the URL.

svn path=/branches/shell-experiments/; revision=63638
2014-06-23 22:08:33 +00:00
David Quintana
bcf5de9efc [RSHELL]
* Notify the focus manager that we are about to open a context menu, so that it doesn't mess with the menu popup.

svn path=/branches/shell-experiments/; revision=63634
2014-06-23 17:50:11 +00:00
David Quintana
8b3b02a2ca [EXPLORER-NEW]
* Use a struct like the comment suggested. May not fix anything, but it's one FIXME less in ReactOS.

svn path=/branches/shell-experiments/; revision=63623
2014-06-19 23:38:39 +00:00
David Quintana
fe526a2a66 [FILEBROWSER]
* Copy basic path parsing from explorer-new, so filebrowser.exe can load with a different folder active.

svn path=/branches/shell-experiments/; revision=63622
2014-06-19 23:24:09 +00:00
David Quintana
1eec111b81 [BROWSEUI]
* Process ParseNow on the CBEN_ENDEDIT notification.
* Call SHAutoComplete to ask the edit control to have autocomplete functionality. I need to figure out the flag or whatever is needed to make it show "Search 'string'" when entering something that's not a valid path.

svn path=/branches/shell-experiments/; revision=63621
2014-06-19 23:23:04 +00:00
David Quintana
e33dc4351a [RSHELL]
* Turn off spammy log.
* A small themeing tweak for the menubar.

[BROWSEUI]
* Turn off spammy log.
* A small tweak to a function.

svn path=/branches/shell-experiments/; revision=63620
2014-06-19 23:14:39 +00:00
Hermès Bélusca-Maïto
fb22c97c91 [EXPLORER][EXPLORER_NEW]
[TASKMGR]
Set a proper shutdown level (with SetProcessShutdownParameters) so that explorer and taskmgr are terminated the very last when one shutdowns ReactOS.
See Windows Internals 4th page 286 (section "Shutdown") which gives the values (that I've cross-checked on Windows 2k3 too).

svn path=/branches/shell-experiments/; revision=63601
2014-06-15 20:02:26 +00:00
David Quintana
02bd6eebde [BROWSEUI]
* Fix stack corruption in VS2010 builds. No idea why it doesn't crash with other compilers.

[EXPLORER-NEW]
* Fix a similar bug that does not appear to cause any issue, but is a bug regardless.

svn path=/branches/shell-experiments/; revision=63548
2014-06-07 23:26:35 +00:00
David Quintana
7ddd2648be [RSHELL]
* Use the debugging class to track COM refcounting of the CMenuBand.
* CMenuSite: Remove an useless line.

[BROWSEUI]
* Refactor the CreateMenuBar method in an attempt to figure out a seemingly magic crash with VS2010 (not yet solved).
* Begin fixing some unused-but-set warnings.

[SHELL32]
* Fix some small bugs spotted by Victor.

svn path=/branches/shell-experiments/; revision=63546
2014-06-07 13:54:11 +00:00
David Quintana
9f33eab100 [BROWSEUI]
* Make failure codes print themselves. Helps debug.

svn path=/branches/shell-experiments/; revision=63541
2014-06-04 18:08:35 +00:00
David Quintana
72aa759dd4 [SHELL32]
* Fix gcc compilation.

[BROWSEUI/RSHELL]
* Use virtual destructors and cleanup with delete in the creator functions.
* Try to fix a bit the "close" flow, so that less circular references remain when the filebrowser windows are closed.

svn path=/branches/shell-experiments/; revision=63539
2014-06-04 16:25:48 +00:00
David Quintana
580b89e9b6 [BROWSEUI]
* Plug a few menu leaks. In Windows, it brings down the leaked menus from 20 per navigation, to only 1-2. In ReactOS, from 60 to 20.

[RSHELL,SHELL32]
* Code tweaks that shouldn't change the actual behaviour.

svn path=/branches/shell-experiments/; revision=63537
2014-06-03 01:04:19 +00:00
David Quintana
52fc0bf57d [BROWSEUI]
* Fix gcc build.

svn path=/branches/shell-experiments/; revision=63536
2014-06-02 21:37:26 +00:00
David Quintana
3a54fd538b [BROWSEUI/RSHELL]
* Begin fixing the process of destroying the related objects when closing the window, so that eventually the filebrowser/explorer process will properly exit cleanly when no more windows are open.

svn path=/branches/shell-experiments/; revision=63535
2014-06-02 21:35:32 +00:00
David Quintana
13c7cade20 [BROWSEUI]
* This shouldn't have been commited. The browse windows were freezing because it was trying to use the menu from shell32 instead of rshell.

svn path=/branches/shell-experiments/; revision=63533
2014-06-02 13:23:06 +00:00
David Quintana
9793ab272f [SHELL32]
* The CDefView should not process the backspace key directly. It's already handled by the accelerators.

[BROWSEUI]
* Allow the docked toolbars to translate accelerators.
* CAddressEditBox: Cancel accelerators without modifiers while focused.

[RSHELL]
* Cancel accelerators while a popup is open, and ignore them otherwise.

svn path=/branches/shell-experiments/; revision=63504
2014-05-30 18:00:31 +00:00
David Quintana
acd03fd182 Sync with trunk r63502.
svn path=/branches/shell-experiments/; revision=63503
2014-05-30 17:56:10 +00:00
David Quintana
7411374268 [BROWSEUI]
* Remove a call that shouldn't even be working in Windows, and was completely unnecessary. Fixes explorer-new navigation history in ReactOS.
* Added some debug traces.
CORE-8173

svn path=/branches/shell-experiments/; revision=63479
2014-05-27 17:55:41 +00:00
David Quintana
be04b066aa [RSHELL]
* Close menu on right click too.

[BROWSEUI]
* Check/uncheck the lock toolbar item based on the lock state. The view menu does not update yet.

[SHELL32]
* Destroy the menu when the view window is destroyed.

svn path=/branches/shell-experiments/; revision=63461
2014-05-26 12:26:47 +00:00
David Quintana
340c4e472a These files were on my "ignore-on-commit" list.
svn path=/branches/shell-experiments/; revision=63434
2014-05-24 20:58:13 +00:00
David Quintana
d5e23caf7a Sync with trunk r63430.
svn path=/branches/shell-experiments/; revision=63433
2014-05-24 20:29:19 +00:00
David Quintana
431b80fa6a [SHELL32]
* Add shell browser bitmaps (toolbar, brand icon, go button). Patch by Robert Naumann (gonzoMD).
CORE-8249 #resolve #comment Commited into shell-experiments. Thanks a lot.

svn path=/branches/shell-experiments/; revision=63432
2014-05-24 20:06:03 +00:00
Christoph von Wittich
f83bcc1212 [browseui]
set correct codepage for translations (UTF-8)

svn path=/branches/shell-experiments/; revision=63431
2014-05-24 18:26:15 +00:00
David Quintana
fe43858e1e [SHELL32]
* Reuse the same menu instead of recreating it every time something changes. Fixes the menus not showing, but it's not the right way to do it. A better implementation should come later.

[BROWSEUI]
* Add a german version of the toolbar strings, by Christoph von Wittich.

svn path=/branches/shell-experiments/; revision=63426
2014-05-23 21:22:48 +00:00
David Quintana
baa587134e [BROWSEUI]
* Load the toolbar iten captions from the re

svn path=/branches/shell-experiments/; revision=63422
2014-05-23 13:09:02 +00:00
David Quintana
0acd44c3d7 [BROWSEUI]
* Also load and use the "hot" toolbar bitmap from shell32.dll, not just the normal one.

svn path=/branches/shell-experiments/; revision=63419
2014-05-22 21:35:23 +00:00
David Quintana
d36426f9c0 [BROWSEUI]
* Keep the call to TranslateAcceleratorSB within the shell browser, since it appears the windows CDefView does not call it.
* "Hackplement" the backspace key as being the same as the "go up one level" menu item. This does not seem to be exactly true in Windows, but it does the job.

svn path=/branches/shell-experiments/; revision=63415
2014-05-22 19:13:15 +00:00
David Quintana
2defe4fed2 [BROWSEUI]
* Improve the message loop to allow processing of accelerators.

[SHELL32]
* Return the accelerator to the shell browser if the view doesn't handle it.

svn path=/branches/shell-experiments/; revision=63397
2014-05-21 11:38:29 +00:00
David Quintana
033b716da1 [BROWSEUI]
* Do not swap the big and small imagelist pointers. Fixes the explorer windows not having an icon in the taskbar.
Note: the underlying issue preventing the taskbar from showing a 32x32 icon in the buttons still exists, so other apps with the same behaviour will still fail to draw.

svn path=/branches/shell-experiments/; revision=63383
2014-05-20 12:32:38 +00:00
David Quintana
e8463b3e2e [BROWSEUI]
* Fix a couple typoed function names.

svn path=/branches/shell-experiments/; revision=63382
2014-05-20 10:00:39 +00:00
David Quintana
8c1bafc6f8 [BROWSEUI]
* Fix a couple redundant IFs.
CORE-8248 #resolve #comment Thanks for reporting.

svn path=/branches/shell-experiments/; revision=63381
2014-05-20 09:09:08 +00:00
David Quintana
24010ffd80 [BROWSEUI]
* Moved some code from ParseNow into Execute, pending future improvements to the code flow.

svn path=/branches/shell-experiments/; revision=63378
2014-05-19 21:55:09 +00:00
David Quintana
564f732c7c [BROWSEUI]
* Implement ParseNow to allow navigating to the current address in the editbox.

[SHELL32]
* Set the focus to the listview if the browser is requesting it.

CORE-7330

svn path=/branches/shell-experiments/; revision=63371
2014-05-19 16:08:30 +00:00
David Quintana
9276b066c7 [BROWSEUI]
* Disable the brandband again, since it doesn't look right in ros.
* Fix the browse window styles so that it can properly open with system-provided default size.
* Change the default view mode of the file list to Icons.
CORE-7330

svn path=/branches/shell-experiments/; revision=63370
2014-05-19 12:05:24 +00:00
David Quintana
14c68ccd3f [EXPLORER-NEW]
* Default to always-on-top if the registry setting is not found.
* Reload and apply settings on display change. Fixes taskbar not repositioning on resolution changes.
CORE-7330

svn path=/branches/shell-experiments/; revision=63369
2014-05-19 10:44:33 +00:00
David Quintana
a8667b0ffe [EXPLORER-NEW]
* Fix the fallback for when rshell functions are not exported or rshell is not present.
* While at it, avoid unnecessary calls to LoadLibrary.

svn path=/branches/shell-experiments/; revision=63357
2014-05-18 18:05:16 +00:00
David Quintana
a55f7c589b [RSHELL]
* Turn back some DbgPrints into TRACEs.
* Remove the desktop from the rshell exports, as it works better in ros that way, and it's only needed for debugging in windows 8.

svn path=/branches/shell-experiments/; revision=63352
2014-05-18 14:20:27 +00:00
David Quintana
6600002283 Sync with trunk r63343.
svn path=/branches/shell-experiments/; revision=63351
2014-05-18 12:11:58 +00:00
David Quintana
4242fb21c0 [WIN32K/NTUSER]
* Allow WM_ACTIVATEAPP to be sent to the deactivated windows. Fixes the start menu not closing when clicking outside the taskbar. Patch by Huw (Frontier).
CORE-8235 #resolve #comment Included in shell-experiments branch. Thanks.

svn path=/branches/shell-experiments/; revision=63350
2014-05-18 12:04:25 +00:00
David Quintana
7a09d4a028 [WIN32K/NTUSER]
* HSHELL_WINDOWCREATED should only be sent for visible windows.
CORE-8226 #resolve #comment Fixed in the latest commit. Thanks for reporting.

svn path=/branches/shell-experiments/; revision=63316
2014-05-16 19:13:12 +00:00
David Quintana
1f5d24518e [WIN32k/NTUSER]
* Make the conditions actually check what was intended.

svn path=/branches/shell-experiments/; revision=63313
2014-05-16 11:14:04 +00:00
David Quintana
2caa76f93d [RSHELL]
* Fix shell menus closing when clicking on the frame/banner.
CORE-7586

svn path=/branches/shell-experiments/; revision=63312
2014-05-16 11:12:51 +00:00
David Quintana
389001ca69 [WIN32K/NTUSER]
* Fix gcc compilation.

svn path=/branches/shell-experiments/; revision=63307
2014-05-15 18:30:31 +00:00
David Quintana
c0a40fbfe8 [WIN32K/NTUSER]
* Apply the same filter to HSHELL_WINDOWACTIVATED, that I used for _WINDOWCREATED.

svn path=/branches/shell-experiments/; revision=63306
2014-05-15 18:07:41 +00:00
David Quintana
9d30009eb1 [EXPLORER-NEW]
* Fix handling of taskbar items.
* Filter out the desktop and taskbar from the button list.
* Fixes minimizing from the taskbar in Windows (something else is preventing it from working in ros).

[NTUSER]
* Improve filtering of windows before calling HSHELL_WINDOWCREATED.

[USER32]
* Menus are supposed to be WS_EX_TOOLWINDOW so they don't show up in the taskbar.

[ATL]
[BROWSEUI]
[SHELL32]
* Include ATL aggregation patch by Huw (Frontier) (with Amine's changes).

CORE-8175

svn path=/branches/shell-experiments/; revision=63304
2014-05-15 13:23:06 +00:00
David Quintana
753d2916b8 This file got messed up somehow, and was preventing the branch from booting properly.
svn path=/branches/shell-experiments/; revision=63277
2014-05-13 18:51:03 +00:00
David Quintana
8db8073cbb Sync with trunk r63270.
svn path=/branches/shell-experiments/; revision=63271
2014-05-13 12:11:12 +00:00
David Quintana
a607a23a14 [BROWSEUI]
* AddressBand: Create a combobox item to hold the info of the current folder, and keep it selected. This will in the future be improved to show a pseudo-tree including all the parent folders up to the Desktop, with the Desktop and My Computer expanded.
CORE-8220

svn path=/branches/shell-experiments/; revision=63270
2014-05-13 08:53:26 +00:00
David Quintana
6fc740948a [BROWSEUI]
* Fix gcc build.
* Also, undo a change that wasn't as useful as I first thought it would be.
CORE-8183 #resolve #comment Here you go. Thanks for reporting.

svn path=/branches/shell-experiments/; revision=63196
2014-05-08 20:16:06 +00:00
David Quintana
057a69972f Sync with trunk r63174.
CORE-8176 #resolve #comment Trunk commit r63174 should fix this issue. I merged from trunk to bring it into Shell-experiments.

svn path=/branches/shell-experiments/; revision=63175
2014-05-06 15:51:24 +00:00
David Quintana
6005af09db [BROWSEUI]
* Begin implementing resizing of the rebar.
* Begin implementing the addressbar function. For now, the current folder path is displayed. No icon, no parsing support, no combo dropdown list.
CORE-8173

svn path=/branches/shell-experiments/; revision=63156
2014-05-04 13:57:23 +00:00
David Quintana
8c3a5f9b93 [SHELL32]
* Fix redundant clauses by converting the code to a switch block. Adapted from a patch by Victor Martinez.
CORE-8161 #resolve #comment Fixed in the shell-experiments branch. Thanks.

svn path=/branches/shell-experiments/; revision=63115
2014-05-02 17:27:28 +00:00
David Quintana
62f156f677 [BROWSEUI]
* Do not set the imagelist if the bitmap wasn't loaded.
* Fix the flags that caused the toolbar not to relocate when toggling the lock mode.

svn path=/branches/shell-experiments/; revision=63114
2014-05-02 17:25:19 +00:00
David Quintana
dcc7bb6c0d [RSHELL]
* I forgot a cast and a couple IID_PPV_ARG uncommited.

[BROWSEUI]
* Fixed rebar flags to match windows. Adds the missing border around the toolbars.
* Fix some calculations of the rebar size.
* Fetch the icon of the current folder and assign it to the browse window.

CORE-7330

svn path=/branches/shell-experiments/; revision=63103
2014-05-02 11:58:07 +00:00
David Quintana
fb6dcedf18 [RSHELL]
[SHELL32]
* Move the IID_NULL_PPV_ARG macro to the shobj_undoc header, next to the (also ros-specific) IID_PPV_ARG macro, so that it can be used elsewhere.

[SHELL32]
* Make use of IID_NULL_PPV_ARG in all the calls to GetUIObjectOf, and fix one instance of mismatched riid/pointer.

CORE-7330

svn path=/branches/shell-experiments/; revision=63044
2014-04-29 11:14:29 +00:00
David Quintana
8221f567e0 [BROWSEUI]
[SHELL32]
* Make use of IID_PPV_ARG (part 2).

svn path=/branches/shell-experiments/; revision=63040
2014-04-28 21:59:02 +00:00
David Quintana
0c144205d5 [BROWSEUI]
* Make use of the IID_PPV_ARG for typesafe interface return pointers, and a few other cosmetic changes.
CORE-7330

svn path=/branches/shell-experiments/; revision=63033
2014-04-28 15:29:38 +00:00
Amine Khaldi
3a088d8ec6 * Sync up to trunk HEAD (r62975).
svn path=/branches/shell-experiments/; revision=62976
2014-04-26 11:31:20 +00:00
David Quintana
a418d8b657 [RSHELL]
* Fix compiling with the system classes selected instead of the custom ones.
CORE-7586

svn path=/branches/shell-experiments/; revision=62962
2014-04-25 10:45:28 +00:00
David Quintana
60334b103a [BROWSEUI]
* Reenable the brand box on file browser windows.
* Fix an invalid usage of a null HWND.
* Implement size calculation of the standard toolbar.
CORE-7330

svn path=/branches/shell-experiments/; revision=62961
2014-04-25 10:44:36 +00:00
David Quintana
2f3d0e3e01 [RSHELL]
* Implement selecting the first/last item, and make the menu system choose to select the first item when opening a submenu with the keyboard.

svn path=/branches/shell-experiments/; revision=62959
2014-04-24 17:42:16 +00:00
David Quintana
cfb6a8a36e [RSHELL]
* Fix stack overflow when pressing enter with a menu item selected. Executing with enter now works correctly.
CORE-7586

svn path=/branches/shell-experiments/; revision=62957
2014-04-24 16:17:53 +00:00
David Quintana
663bc1da24 [RSHELL]
* Prevent the focused window from receiving keyboard events while a shell menu is open.
CORE-7586

svn path=/branches/shell-experiments/; revision=62935
2014-04-24 11:25:46 +00:00
David Quintana
78790baf2e [RSHELL]
* Almost working keyboard navigation on horizontal menu bar. It does not yet switch between menus when a submenu of the shell menu is currently open and you press [right].
CORE-7586

svn path=/branches/shell-experiments/; revision=62891
2014-04-22 17:44:19 +00:00
David Quintana
dc8f232870 [RSHELL]
* Implemented horizontal keyboard navigation on the menubar. Does not yet work for the Favorites menu, which is a shell popup and not a tracked popup. Also missing the system menu in the rotation.

svn path=/branches/shell-experiments/; revision=62757
2014-04-16 12:14:02 +00:00
David Quintana
9c589bb131 Sync with trunk r62754.
svn path=/branches/shell-experiments/; revision=62756
2014-04-15 23:01:15 +00:00
David Quintana
18a587e569 [RSHELL]
* Fix gcc build.
* Wip beginning of horizontal menubar keyboard navigation. Not working yet. ;P
CORE-7586

svn path=/branches/shell-experiments/; revision=62755
2014-04-15 22:30:37 +00:00
David Quintana
5e4427d973 [RSHELL]
* Fix keyboard navigation on vertical popup menus. Navigating through the menubar does not work yet.
CORE-7586

svn path=/branches/shell-experiments/; revision=62753
2014-04-15 15:53:17 +00:00
David Quintana
ba203171e1 [RSHELL]
* Fixed the context menu for shell items.
* Some more code style improvements.
* Moved the toggles between using system classes and rshell classes into the constructor functions, so the code is easier to read.
CORE-7586

svn path=/branches/shell-experiments/; revision=62752
2014-04-15 10:08:08 +00:00
David Quintana
9b472f38cb [RSHELL]
* Code cleanups and formatting.
* Remove the logging wrappers. If I need them again I'll bring them back.
* Try to fix a few "glitches" in the hot-tracking.

svn path=/branches/shell-experiments/; revision=62693
2014-04-09 11:45:02 +00:00
David Quintana
c21f759be0 [RSHELL]
* Some code improvements, refactoring, and commenting.
* Using alternative method of handling hot-tracking, which does not break in win2003.
CORE-7586

svn path=/branches/shell-experiments/; revision=62681
2014-04-07 18:41:47 +00:00
David Quintana
c46d671641 [RSHELL]
* Some small fixes to the previous commit. (Clicking still do not work in win2003, though)

svn path=/branches/shell-experiments/; revision=62680
2014-04-07 10:12:41 +00:00
David Quintana
97b02b410b [RSHELL]
* Further improvements. Not working yet. Commiting as backup/history.

svn path=/branches/shell-experiments/; revision=62603
2014-04-03 18:30:25 +00:00
David Quintana
a875dbf317 [RSHELL]
* Improvements on the focus manager. The menus work better, but still not fully. Commiting for backup/history purposes.
CORE-7586

svn path=/branches/shell-experiments/; revision=62601
2014-04-02 17:37:37 +00:00
David Quintana
8676a39ebc [RSHELL]
* Redesigned large portions of the focus manager. All the mouse interactions seem to work now
CORE-7586.

svn path=/branches/shell-experiments/; revision=62567
2014-03-26 11:33:52 +00:00
David Quintana
d2b33acd15 [RSHELL]
* Improve behaviour when hovering and clicking on the menubar. It's still somewhat glitchy though.
CORE-7586

svn path=/branches/shell-experiments/; revision=62539
2014-03-21 10:13:18 +00:00
David Quintana
0216102e0c [RSHELL]
* Improve mouse navigation of the menubar.
* Fix the menus.
* Fix the case for system includes (hopefully fixes).
CORE-7586

svn path=/branches/shell-experiments/; revision=62537
2014-03-20 15:39:25 +00:00
David Quintana
ad40525f61 [RSHELL]
* Implement WH_MSGFILTER hooking to handle the popup menus from the horizontal menubar. Switching between menu items wby moving the mouse now works, but at the moment, the non-menu popups (including the start menu) are somewhat glitchy.
CORE-7586

svn path=/branches/shell-experiments/; revision=62534
2014-03-19 15:33:41 +00:00
David Quintana
64227df624 Sync with trunk r62529.
svn path=/branches/shell-experiments/; revision=62530
2014-03-18 14:39:04 +00:00
David Quintana
eaec85cafe [RSHELL]
* Begin work in improving the behaviour of the horizontal mode menuband. There's still a lot of work to do, and some things are temporarily worse than before, but in other places it has improved already.
CORE-7586

svn path=/branches/shell-experiments/; revision=62520
2014-03-17 12:33:03 +00:00
David Quintana
fb26c9bcd8 [RSHELL]
* Sorry.

svn path=/branches/shell-experiments/; revision=62516
2014-03-16 09:36:28 +00:00
David Quintana
535f0f1c4e [RSHELL]
Whoops. MSVC does not not error with this... ;P

svn path=/branches/shell-experiments/; revision=62515
2014-03-16 09:30:29 +00:00
David Quintana
aa699bf2a9 [RSHELL]
* Fix the hot tracking on the filebrowser menubar. Still does not handle switching menus while hovering, though.
CORE-7586

svn path=/branches/shell-experiments/; revision=62514
2014-03-16 09:28:51 +00:00
David Quintana
ea3e04f67f [RSHELL]
* Use a better way to toggle using TBSTYLE_EX_VERTICAL instead of TBSTATE_WRAP.
CORE-7586

svn path=/branches/shell-experiments/; revision=62511
2014-03-16 01:21:54 +00:00
David Quintana
75f35dbf96 [RSHELL]
* Make this crazy nested conditional mess a bit flatter.

svn path=/branches/shell-experiments/; revision=62510
2014-03-15 21:44:49 +00:00
David Quintana
bacc079c22 [RSHELL]
* Fix keyboard navigation and hottracking behaviour. One glitch remains where quickly moving the mouse to a parent's toolbar item, and returning to the submenu before it closes, won't restore the parent's hot item to the one with the submenu.

svn path=/branches/shell-experiments/; revision=62509
2014-03-15 21:38:15 +00:00
Amine Khaldi
492eebcc0e [EXPLORER_NEW]
* Fix MSVC build.

svn path=/branches/shell-experiments/; revision=62504
2014-03-15 15:02:53 +00:00
Amine Khaldi
f4388e723d * Sync up to trunk HEAD (r62502).
svn path=/branches/shell-experiments/; revision=62503
2014-03-15 14:56:08 +00:00
David Quintana
c3ad2419ea [SHELL32]
* Get rid of those dummy menu items.

svn path=/branches/shell-experiments/; revision=62495
2014-03-14 11:45:30 +00:00
David Quintana
b948aa332c [RSHELL]
* Fix some null dereferences.
* Fix positioning of submenus of an horizontal menu toolbar.

[BROWSEUI]
* Fix some null dereferences.

CORE-7586

svn path=/branches/shell-experiments/; revision=62492
2014-03-13 16:21:56 +00:00
David Quintana
97ff00f312 [SHELL32]
* Added partial implementation of the IShellFolderView interface to CFolderView. Patch by Ivan Rodionov.
CORE-7976 #resolve #comment Applied to shell-experiments branch. Thanks.

svn path=/branches/shell-experiments/; revision=62489
2014-03-13 12:50:26 +00:00
David Quintana
3e2aafdb95 [SHELL32]
* Use the correct icon for the "My Computer" item. Patch by Robert Naumann. 
CORE-7979 #resolve #comment Applied to shell-experiments branch. Thanks.

svn path=/branches/shell-experiments/; revision=62488
2014-03-13 12:36:48 +00:00
David Quintana
487cfe837d [SHELL32]
* SHGetImageList should not return a duplicated ImageList. In Windows the pointers returned by Shell_GetImageLists match the pointers returned by SHGetImageList for SHIL_SMALL and SHIL_LARGE.

[RSHELL]
* Remove two obsolete debug prints.

svn path=/branches/shell-experiments/; revision=62483
2014-03-12 12:34:44 +00:00
David Quintana
905eb2bdce [RSHELL]
* Workaround for the exec issue. Ros currently seems to send a bogus WM_ACTIVATE message when clicking while the window is already active. Proper fix may come later if I can figure out why this happens.

CORE-7586

svn path=/branches/shell-experiments/; revision=62475
2014-03-11 17:40:18 +00:00
David Quintana
683375abdb [RSHELL]
* Fix reusing the same toolbar when SetMenu is called multiple times.
* Avoid some null dereferences.

[BROWSEUI]
* Temporarily (?) disable the logo band.

The browser window's "coolbar" and menubar now display and work properly in both Windows and ReactOS.

CORE-7586

svn path=/branches/shell-experiments/; revision=62472
2014-03-11 10:42:25 +00:00
David Quintana
6f06c27374 [RSHELL]
* Give TrackPopupMenuEx the top-level window. Need to figure out how Windows does this, it probably does not simply use the top-level window that way.
* Give TrackPopupMenuEx better flags and a better exclude rect.
CORE-7586

svn path=/branches/shell-experiments/; revision=62469
2014-03-10 12:01:37 +00:00
David Quintana
2b06cdd40e [FILEBROWSER]
* Svn glitched out when applying a patch

svn path=/branches/shell-experiments/; revision=62450
2014-03-07 23:17:23 +00:00
David Quintana
51b0371f34 [EXPLORER]
* Rename the output to explorer_old

[EXPLORER-NEW]
* Rename the output to explorer
* Launch a browseui window when explorer is run with an existing shell process.

Shell-experiments will now be running the new shell by default.
This allows me to test the shell classes under more accurate conditions, so I was using it locally for a while.
I decided to commit because of two reasons:
1. It was making me temporarily revert some changes done to some files when I wanted to commit, and
2. It lets everyone see the results of the shell-experiments project without having to mess with the task manager.

Keep in mind that, as the branch name implies, it STILL is an experiment.

CORE-7586

svn path=/branches/shell-experiments/; revision=62449
2014-03-07 22:39:49 +00:00
David Quintana
2ca6b95aeb [BROWSEUI]
* Load and use rshell for the menubar.
* Properly forward WM_NOTIFY and WM_COMMAND messages to the toolbars.

[RSHELL]
* Improve behaviour of horizontal menubands.
* Clicking on submenu items does not work yet.

CORE-7586

svn path=/branches/shell-experiments/; revision=62448
2014-03-07 22:28:55 +00:00
David Quintana
a8919a7a3b [NTUSER]
* Revert a change that removed too much. Unbreaks the "New..." menu, and anywhere else that required this, although the code feels like a workaround for a bug elsewhere.

svn path=/branches/shell-experiments/; revision=62436
2014-03-06 03:04:50 +00:00
David Quintana
f3964379b1 [EXPLORER-NEW]
* I don't know what this may fix, but it was wrong. On the upside, now there's less spam in the log.

svn path=/branches/shell-experiments/; revision=62433
2014-03-05 13:57:02 +00:00
David Quintana
64c34d24fd [RSHELL]
* CMenuSite: Reworked the code to avoid SHIsSameObject, since newer versions of windows do not implement that function. The code should be equivalent, and does less unnecessary calls to QueryInterface.
CORE-7879

svn path=/branches/shell-experiments/; revision=62432
2014-03-05 13:14:51 +00:00
David Quintana
7529c9897c [RSHELL]
* CMenuSFToolbar: Keep the m_shellFolder pointer in a CComPtr, so that it doesn't get deleted and possibly reused for something else.
CORE-7586

svn path=/branches/shell-experiments/; revision=62429
2014-03-05 12:34:30 +00:00
David Quintana
42bdf3b30f [COMCTL32]
* Make horizontal separators of vertical toolbars draw.
* Apply the same padding to separators as the rest of the buttons.
* Fixup some tabs into spaces, for consistency.
* Needs to be sent to wine.

svn path=/branches/shell-experiments/; revision=62426
2014-03-05 11:48:55 +00:00
David Quintana
1cfa05918e [SHLWAPI]
* Fix the fix... better. Needs to be sent to Wine. Thanks Thomas.

svn path=/branches/shell-experiments/; revision=62422
2014-03-05 10:20:06 +00:00
David Quintana
d77fcfc8c8 [SHLWAPI]
* Fix the right thing.

svn path=/branches/shell-experiments/; revision=62421
2014-03-05 09:48:32 +00:00
David Quintana
11e4273379 [SHLWAPI]
* SHInvokeDefaultCommand is supposed to invoke the DEFAULT command, so why was bInvokeDefault given FALSE?!

[RSHELL]
* A couple of trivial fixes.

[NTUSER/USER32]
* I missed two bits. See CORE-7966 for more info on the menu issue.

CORE-7586

svn path=/branches/shell-experiments/; revision=62420
2014-03-05 09:12:40 +00:00
David Quintana
d1e5c6a2b9 [RSHELL]
* I was telling AddButton that all the items were the last, except the last. Now the submenus display properly. Some of them at least. Others get an exception, it seems.
CORE-7881

svn path=/branches/shell-experiments/; revision=62416
2014-03-03 17:55:43 +00:00
David Quintana
d21bce9206 [NTUSER]
[USER32]
* Fix what I think is a wrong behaviour of storing MF_POPUP in the fType of the menu. Now it relies on hSubMenu being != NULL as an indicator of the presence of a submenu.
* Resource submenus are not supposed to get the hSubMenu as a wID, as far as I can tell.
* From the user point of view, it matches Windows better. Needs review and testing, as I don't know if I updated everything correctly.

svn path=/branches/shell-experiments/; revision=62415
2014-03-03 16:12:39 +00:00
David Quintana
7fe9315c7e [RSHELL]
* Improve logging in case of unexpected failures, and trace the creation of toolbar (menu) items.
CORE-7586

svn path=/branches/shell-experiments/; revision=62414
2014-03-03 16:11:47 +00:00
David Quintana
612d72cb58 [RSHELL]
* Move the copying back where it belongs. CMake may generate the dependencies the wrong way around (explorer-new should depend on rshell), but at least the copying works as expected, even if I always have to "build solution".
* Allow toggling between TBSTYLE_EX_VERTICAL and the manual TBSTATE_WRAP setting by (un)definiting TBSTYLE_EX_VERTICAL.
CORE-7881

svn path=/branches/shell-experiments/; revision=62412
2014-03-03 11:14:04 +00:00
David Quintana
9304a4e45f [RSHELL]
* Improve encapsulation of the CMenuToolbarBase by avoiding unnecessary usages of the window handle from the derived classes.
CORE-7881

svn path=/branches/shell-experiments/; revision=62411
2014-03-03 10:19:35 +00:00
David Quintana
c3b293c4b2 [RSHELL]
* CMenuToolbarBase: Use TBSTATE_BREAK on every button instead of TBSTYLE_EX_VERTICAL. This allows the vertical alignment to work on ros, although the separators are neither sized nor drawn correctly, and the arrow alignment is wrong.
NOTE: It's still not functional. Second level submenus don't show up, and clicking on items does nothing.
CORE-7881

svn path=/branches/shell-experiments/; revision=62382
2014-03-02 19:35:13 +00:00
David Quintana
28bf05e265 [RSHELL]
* Move dependency copying to the target script, so that the target properly depends on the source and not the other way around.
* Make all the custom constructors WINAPI.
* Add all the custom constructors to the spec file.
CORE-7596

svn path=/branches/shell-experiments/; revision=62365
2014-03-01 11:46:04 +00:00
David Quintana
b35ff38428 [RSHELL]
* Improve hot-tracking behaviour.
CORE-7881

svn path=/branches/shell-experiments/; revision=62347
2014-02-27 11:56:28 +00:00
David Quintana
107ae8ee41 [RSHELL]
* Add a new logging wrapper to record calls from the start menu back to the explorer site.
CORE-7586

svn path=/branches/shell-experiments/; revision=62335
2014-02-26 14:05:55 +00:00
David Quintana
8b06cd6325 [EXPLORER-NEW]
* Show the start menu at the same position and alignment Windows uses.

[RSHELL]
* Use IShellFolder methods instead of SHCreateShellItem.
* Handle toolbar window events from the toolbar class.
* Improve the positioning calculations.
* TODO: How to tell the submenus of the start menu to show towards the left? For when the taskbar is ABE_RIGHT.

CORE-7596

svn path=/branches/shell-experiments/; revision=62334
2014-02-26 11:13:23 +00:00
David Quintana
58931088c3 [RSHELL]
* Some menu style improvements.
* Some code style improvements.
* Added a skeleton CMergedFolder, as a base towards showing items from both the user and the common start menus. It does not work yet.
CORE-7586

svn path=/branches/shell-experiments/; revision=62330
2014-02-25 18:23:02 +00:00
David Quintana
53f74feb2d [RSHELL]
* CStartMenu: Now THESE are the right IDs. The previous ones were icon indices within the file.

svn path=/branches/shell-experiments/; revision=62329
2014-02-25 11:47:29 +00:00
David Quintana
5ee1aff4f5 [RSHELL]
* CStartMenu: Update the icon resource IDs to the IDs with the smaller images. This causes the images not to show. Need help figuring out why.
* Misc changes.
CORE-7586

svn path=/branches/shell-experiments/; revision=62328
2014-02-25 10:44:28 +00:00
David Quintana
2902b1cf0c [RSHELL]
* CMenuBand: Fix the keyboard navigation a bit. Still not fully working yet.
* Show submenus a bit closer to the arrow, as Windows does.
CORE-7881

svn path=/branches/shell-experiments/; revision=62323
2014-02-24 23:10:12 +00:00
David Quintana
9cf711a73f [RSHELL]
* CMenuBand: Fix menu colors.
CORE-7881

svn path=/branches/shell-experiments/; revision=62320
2014-02-24 13:05:24 +00:00
David Quintana
b62a6757ee [RSHELL]
* Move some classes to separate files.
* Move class declarations to .h files.
CORE-7586

svn path=/branches/shell-experiments/; revision=62319
2014-02-24 11:59:34 +00:00
David Quintana
8c18269e39 [RSHELL]
* Undo a test change that shouldn't have reached the commit. ;P

svn path=/branches/shell-experiments/; revision=62318
2014-02-24 11:20:16 +00:00
David Quintana
eee3377ec9 [RSHELL]
* CMenuBand:
  - Use a Pager control on top of the SF Toolbar, like Windows does.
  - Cache the ideal size of the toolbars to reuse it next time the start menu shows.
  - Draw the dropdown arrows on items with dropdowns.
  - Cancel the timer and open a submenu immediately if the item is clicked.
  - Draw the selected background color on the item with a popup if there is no other item being hovered.
  - Add some space for the dropdown arrows in the size calculations (hardcoded).
  - Simplify the size calculation and positioning.
CORE-7881

svn path=/branches/shell-experiments/; revision=62317
2014-02-24 11:07:16 +00:00
Amine Khaldi
56bf9b6dbd * Sync up to trunk HEAD (r62309).
svn path=/branches/shell-experiments/; revision=62310
2014-02-23 18:28:37 +00:00
David Quintana
9877002e5c [CMAKE]
* Actually do what I said.

svn path=/branches/shell-experiments/; revision=62309
2014-02-23 18:15:20 +00:00
David Quintana
b6d033175c [CMAKE]
* Revert change from r62307. Will do a proper merge instead.

[RSHELL]
* CMenuBand: Use SHGetImageList instead of Shell_GetImageLists.
* CMenuBand: Remove minwidth in the size calculation.

svn path=/branches/shell-experiments/; revision=62308
2014-02-23 18:13:43 +00:00
David Quintana
04a3726c09 [CMAKE]
* Take MSVC workaround from trunk.

[RSHELL]
* Fix GCC build.
* Add a couple error checks.

svn path=/branches/shell-experiments/; revision=62307
2014-02-23 16:44:54 +00:00
David Quintana
d0f3e72c8e [RSHELL]
* CMenuBand: Send timer notifications for all items, so we can hide a previous submenu when the user hovers an item without submenu.
* CMenuBand: Avoid a stack overflow in some versions of windows by relying on the stored value instead of asking for it in the middle of a changed event.
CORE-7881

svn path=/branches/shell-experiments/; revision=62303
2014-02-23 15:02:02 +00:00
David Quintana
dcbd65feca [RSHELL]
* CMenuDeskBar: Actually use the Popup flags to decide on the relative position of the submenus.
CORE-7886

svn path=/branches/shell-experiments/; revision=62296
2014-02-23 00:15:27 +00:00
David Quintana
905ab8ebba [RSHELL]
* Take "DbgPrint" function from explorer-new.
* CMenuBand: Show placeholder if the band gets an empty IShellFolder. Added what I guess is a hack, to allow CMenuDeskBar to get the submenu popup from the band.
* CMenuDeskBar: Use WM_ACTIVATE and WM_ACTIVATEAPP to detect when the menu should be closed. Uses the hack above for the exception of showing a submenu.
CORE-7886

svn path=/branches/shell-experiments/; revision=62295
2014-02-22 22:59:28 +00:00
Amine Khaldi
ddb3d908c9 * Sync up to trunk HEAD (r62285). Branch guys deserve the significant speedups too ;)
svn path=/branches/shell-experiments/; revision=62286
2014-02-22 10:31:26 +00:00
David Quintana
07467c9e06 [RSHELL]
* CMenuBand, CMenuDeskBar: Improve the SubMenu hierarchy and OnSelect flow. Now the menu will spread a FullCancel or Execute upwards and close the whole start menu.
CORE-7881

svn path=/branches/shell-experiments/; revision=62280
2014-02-21 10:00:00 +00:00
David Quintana
9f9be3f9bb [RSHELL]
* Improve the layout of the class definitions to make the important details easier to find.
* Rename private (non-COM) class methods to more appropriate names, including a prefix.
* CMenuBand: Make one submenu close before showing another one. This may not be happening in the same exact way windows does it.
CORE-7881

svn path=/branches/shell-experiments/; revision=62263
2014-02-20 16:18:49 +00:00
David Quintana
b1290e6ab0 [RSHELL]
* CMenuBand: Implement rudimentary support for changing the hot item with the keyboard (up/down). The code can probable be simpler, and some corner cases need to be fixed, but it works.
* CMenuDeskBar: Attempt to redesign OnSelect to better match the windows behaviour, which is still mostly unknown.
* Make the log results more readable.
CORE-7881

svn path=/branches/shell-experiments/; revision=62262
2014-02-20 12:12:42 +00:00
David Quintana
e0d383ebd4 [RSHELL]
* CMenuDeskBar: Use the submenu pointer to pass on the cancel events. Windows appears to call this with code=2 (cancellevel).
* CMenuBand: Begin implementing a focus manager for the menu windows. This class will take care of handling mouse and keyboard interactions, including closing the start menu and submenus when the user clicks outside the menu window.
CORE-7881

svn path=/branches/shell-experiments/; revision=62259
2014-02-19 20:35:50 +00:00
David Quintana
b6207043c9 [RSHELL]
* Reduce a few more log differences with windows.
CORE-7586

svn path=/branches/shell-experiments/; revision=62254
2014-02-19 13:58:28 +00:00
David Quintana
3b21639530 [RSHELL]
* Improve the logging system to allow using the same logger for both windows classes and rshell classes.
* Add a wrapper for CMenuSite.
* CMenuDeskBar: Reduce the log differences by keeping a cached copy of the client HWND.
* CMenuBand: Reduce the log differences by keeping a copy of the top level HWND. Will be used later.
CORE-7586

svn path=/branches/shell-experiments/; revision=62253
2014-02-19 12:19:50 +00:00
David Quintana
ea49280564 [RSHELL]
* Separate logger wrappers from the actual implementations.
* Fix some warnings.
CORE-7586

svn path=/branches/shell-experiments/; revision=62252
2014-02-19 00:20:45 +00:00
David Quintana
f1281f1369 [RSHELL]
* Fix some more C-style casts, and misc coding style changes.
* CMenuBand: Create a skeleton of the functions that would handle SMIF_TRACKPOPUP submenus.
* CMenuDeskBar: Fix the redraw issue that prevented submenus from working as expected.
CORE-7886

svn path=/branches/shell-experiments/; revision=62248
2014-02-18 18:18:08 +00:00
David Quintana
7c921822b4 [RSHELL]
* CMenuBand: Improve wrapper logging to get a better picture. Handle more SIDs on QueryService. Send selection messages on hot item changed and on execute.
* CMenuDeskBar: Improve wrapper logging to get a better picture. Handle more SIDs on QueryService. Begin handling more cases in OnSelect.
CORE-7881

svn path=/branches/shell-experiments/; revision=62243
2014-02-18 13:55:57 +00:00
David Quintana
edfdf34624 [RSHELL]
* CMenuBand: Fix display of icons for the static toolbar.
* CMenuDeskBar: Fix positioning of the window not to cross the top edge.
CORE-7881

svn path=/branches/shell-experiments/; revision=62242
2014-02-18 11:17:37 +00:00
David Quintana
662d8363c3 [RSHELL]
* CMenuBand: Fix submenu creation for shell folder menus.
CORE-7881

svn path=/branches/shell-experiments/; revision=62240
2014-02-18 11:05:20 +00:00
David Quintana
2b63295fea [RSHELL]
* Change C-style casts to static_cast where possible, and reinterpret_cast elsewhere.
* Make coding style and formatting more consistent.

svn path=/branches/shell-experiments/; revision=62239
2014-02-18 10:26:50 +00:00
Giannis Adamopoulos
46e9b4d1e3 [rshell]
- CStartMenu: add a test flag that makes the start menu show its submenus using SMIF_TRACKPOPUP in order to show how CMenuBand can use TrackPopupMenu 

svn path=/branches/shell-experiments/; revision=62238
2014-02-18 09:18:16 +00:00
David Quintana
b42655951c [RSHELL]
* CMenuBand: Begin implementing submenus for shell items.
* CMenuBand: Begin implementing context menus.
CORE-7881

svn path=/branches/shell-experiments/; revision=62232
2014-02-17 18:38:31 +00:00
David Quintana
d5f6a80f41 [RSHELL]
* CMenuBand: Improve the code structure.
 * Make the class selection better managed.
Thanks Giannis.
CORE-7881

svn path=/branches/shell-experiments/; revision=62231
2014-02-17 17:16:55 +00:00
David Quintana
3aaf437172 [RSHELL]
* CMenuBand: Implement PopupItem for static menus.
 * CMenuDeskBar: Initialize m_Banner.
 * CStartMenu: Create CSubMenu_Constructor function that creates submenus (needs a better name/location).
 * Misc. code style changes.
CORE-7881

svn path=/branches/shell-experiments/; revision=62228
2014-02-17 16:41:10 +00:00
David Quintana
d28d1bb1df [RSHELL]
* CMenuDeskBar: Use the proper value for style in AdjustWindowRect.
* CMenuBand: Implement submenu hot-tracking timer. Not functional yet (submenu creation not implemented).
CORE-7881

svn path=/branches/shell-experiments/; revision=62227
2014-02-17 15:38:55 +00:00
David Quintana
b71085bcc2 [RSHELL]
* CMenuBand: Handle WM_COMMAND and run SMC_EXEC for static menu items (Run, Shutdown).
CORE-7881

svn path=/branches/shell-experiments/; revision=62226
2014-02-17 11:20:35 +00:00
Giannis Adamopoulos
d29f9dcfef [RSHELL]
- CMenuDeskBar: Implement showing a shadow. Implement closing the menu when it loses focus (this only works with the stock menu band for now)

svn path=/branches/shell-experiments/; revision=62225
2014-02-17 10:42:52 +00:00
Giannis Adamopoulos
dc404583fd [rshell]
- CMenuBand: Fix the size of the separators by setting iBitmap to 0 (which acts as the width of the separator).
- CMenuDeskBar: 
Create the window only in CMenuDeskBar::SetClient and not in SetSite. 
Greatly simplify SetSite. 
Make sure that WS_EX_TOPMOST isn't removed when we call SetWindowPos
Do not forward requests for the SID_SMenuPopup service to the taskbar as this causes the menu band to capture the mouse for the taskbar and not the desk bar

svn path=/branches/shell-experiments/; revision=62223
2014-02-16 21:53:21 +00:00
David Quintana
9a1d783d54 [RSHELL]
* CMenuBand: Bring the style closer to a menu.

svn path=/branches/shell-experiments/; revision=62214
2014-02-16 12:48:41 +00:00
David Quintana
60df5bae60 [RSHELL]
* CMenuDeskBar: Improve code style, and implement some more methods.

svn path=/branches/shell-experiments/; revision=62213
2014-02-16 12:48:29 +00:00
David Quintana
e325d1372e [RSHELL]
* CMenuSite: Improve code style.

svn path=/branches/shell-experiments/; revision=62212
2014-02-16 12:48:09 +00:00
David Quintana
c57c04a7c2 [RSHELL]
* A couple small fixes before I go to bed.
* Add to CD, so explorer_new can be run in ros, with the custom classes.
CORE-7886

svn path=/branches/shell-experiments/; revision=62156
2014-02-13 23:49:19 +00:00
David Quintana
c486aa0a00 [RSHELL]
* Add more missing code. The custom CMenuDeskBand is now able to show the contents of a CMenuSite/CMenuBand in the right size, including the banner (not yet fully functional).
* Organize the method list in CMenuSite by interface.

[EXPLORER-NEW]
* Revert the hacks from r62134.

[PSDK]
* Add IUnknown_QueryServiceExec to shlwapi_undoc.h

svn path=/branches/shell-experiments/; revision=62149
2014-02-13 20:16:30 +00:00
David Quintana
3bb9ee7f77 [RSHELL]
* Port the implementation of CMenuDeskBar to rshell (still disabled by default).
* Begin implementing missing features:
 - Notify the band of the icon size change from SetIconSize.

svn path=/branches/shell-experiments/; revision=62138
2014-02-12 19:46:24 +00:00
David Quintana
edd5a38091 [MPLAY32]
* Remove from build while it hangs VS2013.

[EXPLORER-NEW]
* Hack it to work on Windows 7, even if an existing explorer is already running.
* Move start menu popup to its own function, for easier debugging.
* Maybe-fix a drawing issue if no theme is selected.

[RSHELL]
* Added wrapper for CMenuBand
* The cmake script should not use a hardcoded path
* Better name for the log file.
CORE-7886

svn path=/branches/shell-experiments/; revision=62134
2014-02-12 17:48:49 +00:00
David Quintana
ea6aff329b [RSHELL]
* Separate the wrapper logging code to its own file, to facilitate further debugging in other classes.

svn path=/branches/shell-experiments/; revision=62133
2014-02-12 16:54:58 +00:00
David Quintana
5f6b18cc4d [RSHELL]
* Implemented a class that wraps CMenuBand, for the purpose of logging the calls, with parameters and returned values (disabled, set WRAP_LOG to 1).
* Partial (WIP) implementation of CMenuBand.

[ATL]
* VirtualAlloc can not have a non-zero size while using MEM_RELEASE.

svn path=/branches/shell-experiments/; revision=62132
2014-02-12 16:48:36 +00:00
David Quintana
2dc8375579 [RSHELL]
* Implement CMenuSite
CORE-7879

svn path=/branches/shell-experiments/; revision=62131
2014-02-12 16:35:29 +00:00
Giannis Adamopoulos
372a7f9133 - Improve filebrowser a bit and add some FIXMEs to show what should be done later
svn path=/branches/shell-experiments/; revision=62118
2014-02-11 14:06:26 +00:00
Giannis Adamopoulos
239867bdd1 [browseui]
- Add a tiny hack in browseui that allows it to browse properly when the user tries to open a folder in win8

svn path=/branches/shell-experiments/; revision=62082
2014-02-09 21:32:07 +00:00
Giannis Adamopoulos
f47e7d9c12 [filebrowser]
- Do not embed a manifest in the resources in order to allow three different scenarios that can be accomplished by using two manifests
- In the first scenario we have filebrowser.exe + filebrowser.exe.manifest in the same folder. This should work only in windows xp, 2003 and reactos as it depends on the browseui that exists in windows
- The second scenario is to have filebrowser.exe + filebrowser.exe.manifest + browseui.dll in the same folder. This should also work in the same platforms as above but the core of the file browser will be used from the supplied browseui. However browseui will also request to instantiate some com objects implemented in browse and as a result some objects will be used from the browseui that exists in windows
- The third scenario is to have filebrowser.exe + filebrowser.exe.regfree.manifest + browseui.dll + browseui.sxs.manifest. This scenario should work in windows xp and all later versions. Note that filebrowser.exe.regfree.manifest must be renamed to filebrowser.exe.manifest. In this scenario all the functionality of the file browser window is used from the supplied browseui.dll

svn path=/branches/shell-experiments/; revision=62081
2014-02-09 21:23:07 +00:00
Giannis Adamopoulos
f0aee80fcb [atl]
- Fix atl thunks to be allocated in executable memory and not from the stack in order to run libraries that use atl (such as browseui) in windows with DEP enabled 

svn path=/branches/shell-experiments/; revision=62011
2014-02-06 13:07:37 +00:00
Giannis Adamopoulos
1724ea64fb [explorer_new]
- Implement showing and closing the start menu by pressing the WIN key
- Implement handling WM_KLUDGEMINRECT message that informs the window manager the place of an application in the taskbar in order to show the minimization or maximization animation of a window
- Implement showing taskbar settings when the user selects to show the taskbar settings from the settings menu in start menu
- Implement hiding the Favorites menu in the start menu when needed

svn path=/branches/shell-experiments/; revision=62010
2014-02-06 13:01:54 +00:00
Giannis Adamopoulos
c82da59af8 [undocuser.h]
- add the definition of the undocumented message WM_KLUDGEMINRECT

svn path=/branches/shell-experiments/; revision=62009
2014-02-06 13:00:48 +00:00
Giannis Adamopoulos
310ba0e356 [rshell.dll]
-cleanup the header from the remnants of my countless hacks that I tried with this module

svn path=/branches/shell-experiments/; revision=61979
2014-02-04 12:14:14 +00:00
Giannis Adamopoulos
222f0efde5 [rshell]
- Commit rshell.exe that allows explorer_new to run in windows 8

svn path=/branches/shell-experiments/; revision=61978
2014-02-04 12:11:51 +00:00
Giannis Adamopoulos
0a7da455d3 - Add filebrowser to build
svn path=/branches/shell-experiments/; revision=61976
2014-02-04 10:55:46 +00:00
Giannis Adamopoulos
3408d41c60 [filebrowser]
- Add an experimental module called FileBrowser.exe. This program works standalone in windows xp and windows 2003 and opens a new file browser window in its own process. If our browseui.dll is in the same folder, filebrowser will use the implementation of our file browser in windows. That means that standalone it works only in xp and 2003 but with our own browseui it will work on all windows versions (but doesn't work on all for now). This can be used for both testing the implementation of our file browser in windows and as a host process for new file browser windows for explorer_new.exe + rshell.dll

svn path=/branches/shell-experiments/; revision=61974
2014-02-04 10:49:39 +00:00
Giannis Adamopoulos
f52dad5f15 [explorer_new]
- Commit a great experiment for explorer. Our explorer will try to load a library called rshell.dll which will provide an alternative implementation of some functions that are built in in windows shell. These functions are CStartMenu_Constructor, SHCreateDesktop, SHDesktopMessageLoop, WinList_Init and ShellDDEInit. Providing our own implementation for these functions will allow us to make it run in all windows versions up to windows 8 and also test the implementation of our own components that will be placed temporarily in rshell.dll while they are developed and debugged in windows.

svn path=/branches/shell-experiments/; revision=61971
2014-02-04 10:41:02 +00:00
Amine Khaldi
527f2f9057 [SHELL/EXPERIMENTS]
* Create a branch for some evul shell experiments.

svn path=/branches/shell-experiments/; revision=61927
2014-02-02 19:37:27 +00:00
2744 changed files with 150994 additions and 66332 deletions

View File

@@ -19,10 +19,11 @@ add_subdirectory(mmc)
add_subdirectory(mplay32)
add_subdirectory(msconfig)
add_subdirectory(mscutils)
add_subdirectory(mspaint)
add_subdirectory(mstsc)
add_subdirectory(network)
add_subdirectory(notepad)
add_subdirectory(mspaint)
add_subdirectory(osk)
add_subdirectory(rapps)
add_subdirectory(regedit)
add_subdirectory(regedt32)

View File

@@ -19,6 +19,11 @@
#include "precomp.h"
/* command line options */
BOOL OptionT = FALSE, OptionE = FALSE, OptionC = FALSE;
BOOL OptionG = FALSE, OptionR = FALSE, OptionP = FALSE, OptionD = FALSE;
LPCTSTR GUser, GPerm, RUser, PUser, PPerm, DUser;
static GENERIC_MAPPING FileGenericMapping =
{
FILE_GENERIC_READ,
@@ -512,92 +517,500 @@ PrintSpecialAccess:
return Ret;
}
/* add a backslash at end to a path string if necessary */
static VOID
AddBackslash(LPTSTR FilePath)
{
INT len = lstrlen(FilePath);
LPTSTR pch = CharPrev(FilePath, FilePath + len);
if (*pch != _T('\\'))
lstrcat(pch, _T("\\"));
}
static BOOL
GetPathOfFile(LPTSTR FilePath, LPCTSTR pszFiles)
{
TCHAR FullPath[MAX_PATH];
LPTSTR pch;
DWORD attrs;
lstrcpyn(FilePath, pszFiles, MAX_PATH);
pch = _tcsrchr(FilePath, _T('\\'));
if (pch != NULL)
{
*pch = 0;
if (!GetFullPathName(FilePath, MAX_PATH, FullPath, NULL))
{
PrintErrorMessage(GetLastError());
return FALSE;
}
lstrcpyn(FilePath, FullPath, MAX_PATH);
attrs = GetFileAttributes(FilePath);
if (attrs == 0xFFFFFFFF || !(attrs & FILE_ATTRIBUTE_DIRECTORY))
{
PrintErrorMessage(ERROR_DIRECTORY);
return FALSE;
}
}
else
GetCurrentDirectory(MAX_PATH, FilePath);
AddBackslash(FilePath);
return TRUE;
}
static BOOL
PrintDaclsOfFiles(LPCTSTR pszFiles)
{
TCHAR FilePath[MAX_PATH];
WIN32_FIND_DATA FindData;
HANDLE hFind;
DWORD LastError;
/*
* get the file path
*/
if (!GetPathOfFile(FilePath, pszFiles))
return FALSE;
/*
* search for the files
*/
hFind = FindFirstFile(pszFiles, &FindData);
if (hFind == INVALID_HANDLE_VALUE)
return FALSE;
do
{
if (FindData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
continue;
if (!PrintFileDacl(FilePath, FindData.cFileName))
{
LastError = GetLastError();
if (LastError == ERROR_ACCESS_DENIED)
{
PrintErrorMessage(LastError);
if (!OptionC)
{
FindClose(hFind);
return FALSE;
}
}
else
break;
}
else
_tprintf(_T("\n"));
} while(FindNextFile(hFind, &FindData));
LastError = GetLastError();
FindClose(hFind);
if (LastError != ERROR_NO_MORE_FILES)
{
PrintErrorMessage(LastError);
return FALSE;
}
return TRUE;
}
static BOOL
GrantUserAccessRights(LPCTSTR FilePath, LPCTSTR File, LPCTSTR User, TCHAR Perm)
{
/* TODO & FIXME */
switch(Perm)
{
case _T('R'): // Read
break;
case _T('W'): // Write
break;
case _T('C'): // Change (write)
break;
case _T('F'): // Full control
break;
default:
break;
}
return FALSE;
}
static BOOL
ReplaceUserAccessRights(
LPCTSTR FilePath,
LPCTSTR File,
LPCTSTR User,
TCHAR Perm)
{
/* TODO & FIXME */
switch(Perm)
{
case _T('N'): // None
break;
case _T('R'): // Read
break;
case _T('W'): // Write
break;
case _T('C'): // Change (write)
break;
case _T('F'): // Full control
break;
default:
break;
}
return FALSE;
}
static BOOL
EditUserAccessRights(
LPCTSTR FilePath,
LPCTSTR File,
LPCTSTR User,
TCHAR Perm)
{
/* TODO & FIXME */
switch(Perm)
{
case _T('N'): // None
break;
case _T('R'): // Read
break;
case _T('W'): // Write
break;
case _T('C'): // Change (write)
break;
case _T('F'): // Full control
break;
default:
break;
}
return FALSE;
}
static BOOL
DenyUserAccess(LPCTSTR FilePath, LPCTSTR File, LPCTSTR User)
{
/* TODO & FIXME */
return FALSE;
}
static BOOL
RevokeUserAccessRights(LPCTSTR FilePath, LPCTSTR File, LPCTSTR User)
{
/* TODO & FIXME */
return FALSE;
}
static BOOL
ChangeFileACL(LPCTSTR FilePath, LPCTSTR File)
{
if (OptionG)
{
/* Grant specified user access rights. */
GrantUserAccessRights(FilePath, File, GUser, *GPerm);
}
if (OptionP)
{
if (!OptionE)
{
/* Replace specified user's access rights. */
ReplaceUserAccessRights(FilePath, File, PUser, *PPerm);
}
else
{
/* Edit ACL instead of replacing it. */
EditUserAccessRights(FilePath, File, PUser, *PPerm);
}
}
if (OptionD)
{
/* Deny specified user access. */
DenyUserAccess(FilePath, File, DUser);
}
if (OptionR)
{
/* Revoke specified user's access rights. */
RevokeUserAccessRights(FilePath, File, RUser);
}
return TRUE;
}
static BOOL
ChangeACLsOfFiles(LPCTSTR pszFiles)
{
TCHAR FilePath[MAX_PATH];
HANDLE hFind;
WIN32_FIND_DATA FindData;
DWORD LastError;
/*
* get the file path
*/
if (!GetPathOfFile(FilePath, pszFiles))
return FALSE;
/*
* search for files in current directory
*/
hFind = FindFirstFile(pszFiles, &FindData);
if (hFind == INVALID_HANDLE_VALUE)
return FALSE;
do
{
if (FindData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
continue;
if (!ChangeFileACL(FilePath, FindData.cFileName))
{
LastError = GetLastError();
if (LastError == ERROR_ACCESS_DENIED)
{
PrintErrorMessage(LastError);
if (!OptionC)
{
FindClose(hFind);
return FALSE;
}
}
else
break;
}
} while(FindNextFile(hFind, &FindData));
LastError = GetLastError();
FindClose(hFind);
if (LastError != ERROR_NO_MORE_FILES)
{
PrintErrorMessage(LastError);
return FALSE;
}
return TRUE;
}
static BOOL
ChangeACLsOfFilesInCurDir(LPCTSTR pszFiles)
{
HANDLE hFind;
WIN32_FIND_DATA FindData;
TCHAR szCurDir[MAX_PATH];
DWORD LastError;
/*
* get the file path (current directory)
*/
GetCurrentDirectory(MAX_PATH, szCurDir);
AddBackslash(szCurDir);
/*
* search for files in current directory
*/
hFind = FindFirstFile(pszFiles, &FindData);
if (hFind == INVALID_HANDLE_VALUE)
return FALSE;
do
{
if (FindData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
continue;
if (!ChangeFileACL(szCurDir, FindData.cFileName))
{
LastError = GetLastError();
if (LastError == ERROR_ACCESS_DENIED)
{
PrintErrorMessage(LastError);
if (!OptionC)
{
FindClose(hFind);
return FALSE;
}
}
else
break;
}
} while(FindNextFile(hFind, &FindData));
LastError = GetLastError();
FindClose(hFind);
if (LastError != ERROR_NO_MORE_FILES)
{
PrintErrorMessage(LastError);
return FALSE;
}
/*
* search for subdirectory in current directory
*/
hFind = FindFirstFile(_T("*"), &FindData);
if (hFind == INVALID_HANDLE_VALUE)
return FALSE;
do
{
if (_tcscmp(FindData.cFileName, _T(".")) == 0 ||
_tcscmp(FindData.cFileName, _T("..")) == 0)
continue;
if (FindData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
{
GetCurrentDirectory(MAX_PATH, szCurDir);
if (SetCurrentDirectory(FindData.cFileName))
{
ChangeACLsOfFilesInCurDir(pszFiles);
SetCurrentDirectory(szCurDir);
}
else
{
LastError = GetLastError();
if (LastError == ERROR_ACCESS_DENIED)
{
PrintErrorMessage(LastError);
if (!OptionC)
{
FindClose(hFind);
return FALSE;
}
}
else
break;
}
}
} while(FindNextFile(hFind, &FindData));
LastError = GetLastError();
FindClose(hFind);
if (LastError != ERROR_NO_MORE_FILES)
{
PrintErrorMessage(LastError);
return FALSE;
}
return TRUE;
}
int
__cdecl
_tmain(int argc, const TCHAR *argv[])
{
if (argc < 2)
INT i;
LPTSTR pch;
BOOL InvalidParameter = FALSE;
if (argc <= 1)
{
PrintHelp();
return 0;
}
/*
* parse command line options
*/
for (i = 2; i < argc; i++)
{
if (lstrcmpi(argv[i], _T("/T")) == 0)
{
OptionT = TRUE;
}
else if (lstrcmpi(argv[i], _T("/E")) == 0)
{
OptionE = TRUE;
}
else if (lstrcmpi(argv[i], _T("/C")) == 0)
{
OptionC = TRUE;
}
else if (lstrcmpi(argv[i], _T("/G")) == 0)
{
if (i + 1 < argc)
{
pch = _tcschr(argv[++i], _T(':'));
if (pch != NULL)
{
OptionG = TRUE;
*pch = 0;
GUser = argv[i];
GPerm = pch + 1;
continue;
}
}
InvalidParameter = TRUE;
break;
}
else if (lstrcmpi(argv[i], _T("/R")) == 0)
{
if (i + 1 < argc)
{
RUser = argv[++i];
OptionR = TRUE;
continue;
}
InvalidParameter = TRUE;
break;
}
else if (lstrcmpi(argv[i], _T("/P")) == 0)
{
if (i + 1 < argc)
{
pch = _tcschr(argv[++i], _T(':'));
if (pch != NULL)
{
OptionP = TRUE;
*pch = 0;
PUser = argv[i];
PPerm = pch + 1;
continue;
}
}
InvalidParameter = TRUE;
break;
}
else if (lstrcmpi(argv[i], _T("/D")) == 0)
{
if (i + 1 < argc)
{
OptionD = TRUE;
DUser = argv[++i];
continue;
}
InvalidParameter = TRUE;
break;
}
else
{
InvalidParameter = TRUE;
break;
}
}
if (InvalidParameter)
{
PrintErrorMessage(ERROR_INVALID_PARAMETER);
PrintHelp();
return 1;
}
/* /R is only valid with /E */
if (OptionR && !OptionE)
{
OptionR = FALSE;
}
PrintDaclsOfFiles(argv[1]);
if (OptionT)
{
ChangeACLsOfFilesInCurDir(argv[1]);
}
else
{
TCHAR FullPath[MAX_PATH + 1];
TCHAR *FilePart = NULL;
WIN32_FIND_DATA FindData;
HANDLE hFind;
DWORD LastError;
if (argc > 2)
{
/* FIXME - parse arguments */
}
/* get the full path of where we're searching in */
if (GetFullPathName(argv[1],
sizeof(FullPath) / sizeof(FullPath[0]),
FullPath,
&FilePart) != 0)
{
if (FilePart != NULL)
*FilePart = _T('\0');
}
else
goto Error;
/* find the file(s) */
hFind = FindFirstFile(argv[1],
&FindData);
if (hFind != INVALID_HANDLE_VALUE)
{
do
{
if (!(FindData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) ||
(_tcscmp(FindData.cFileName,
_T(".")) &&
_tcscmp(FindData.cFileName,
_T(".."))))
{
if (argc > 2)
{
/* FIXME - edit or replace the descriptor */
}
else
{
if (!PrintFileDacl(FullPath,
FindData.cFileName))
{
LastError = GetLastError();
if (LastError == ERROR_ACCESS_DENIED)
{
PrintErrorMessage(LastError);
}
else
break;
}
else
_tprintf(_T("\n"));
}
}
} while (FindNextFile(hFind,
&FindData));
FindClose(hFind);
if (GetLastError() != ERROR_NO_MORE_FILES)
{
goto Error;
}
}
else
{
Error:
PrintErrorMessage(GetLastError());
return 1;
}
ChangeACLsOfFiles(argv[1]);
}
return 0;

View File

@@ -336,8 +336,8 @@ BEGIN
END
POPUP "Изглед"
BEGIN
MENUITEM "Обикновен", IDM_VIEW_STANDARD, CHECKED
MENUITEM "Научен", IDM_VIEW_SCIENTIFIC, CHECKED
MENUITEM "Обикновен", IDM_VIEW_STANDARD
MENUITEM "Научен", IDM_VIEW_SCIENTIFIC
MENUITEM "Преобразуване", IDM_VIEW_CONVERSION
MENUITEM SEPARATOR
MENUITEM "Шестнaдесетичен\tF5", IDM_VIEW_HEX, CHECKED
@@ -368,8 +368,8 @@ BEGIN
END
POPUP "Изглед"
BEGIN
MENUITEM "Стандартно", IDM_VIEW_STANDARD, CHECKED
MENUITEM "Научен", IDM_VIEW_SCIENTIFIC, CHECKED
MENUITEM "Стандартно", IDM_VIEW_STANDARD
MENUITEM "Научен", IDM_VIEW_SCIENTIFIC
MENUITEM "Преобразуване", IDM_VIEW_CONVERSION
MENUITEM SEPARATOR
MENUITEM "Шестнaдесетичен\tF5", IDM_VIEW_HEX, CHECKED
@@ -401,8 +401,8 @@ BEGIN
END
POPUP "Изглед"
BEGIN
MENUITEM "Стандартно", IDM_VIEW_STANDARD, CHECKED
MENUITEM "Научен", IDM_VIEW_SCIENTIFIC, CHECKED
MENUITEM "Стандартно", IDM_VIEW_STANDARD
MENUITEM "Научен", IDM_VIEW_SCIENTIFIC
MENUITEM "Преобразуване", IDM_VIEW_CONVERSION
MENUITEM SEPARATOR
MENUITEM "Разделяне на хилядите", IDM_VIEW_GROUP, CHECKED

View File

@@ -335,8 +335,8 @@ BEGIN
END
POPUP "Zobrazit"
BEGIN
MENUITEM "Standardní", IDM_VIEW_STANDARD, CHECKED
MENUITEM "Vědecká", IDM_VIEW_SCIENTIFIC, CHECKED
MENUITEM "Standardní", IDM_VIEW_STANDARD
MENUITEM "Vědecká", IDM_VIEW_SCIENTIFIC
MENUITEM "Převody", IDM_VIEW_CONVERSION
MENUITEM SEPARATOR
MENUITEM "Šestnáctkově\tF5", IDM_VIEW_HEX, CHECKED
@@ -367,8 +367,8 @@ BEGIN
END
POPUP "Zobrazit"
BEGIN
MENUITEM "Standardní", IDM_VIEW_STANDARD, CHECKED
MENUITEM "Vědecká", IDM_VIEW_SCIENTIFIC, CHECKED
MENUITEM "Standardní", IDM_VIEW_STANDARD
MENUITEM "Vědecká", IDM_VIEW_SCIENTIFIC
MENUITEM "Převody", IDM_VIEW_CONVERSION
MENUITEM SEPARATOR
MENUITEM "Šestnáctkově\tF5", IDM_VIEW_HEX, CHECKED
@@ -400,8 +400,8 @@ BEGIN
END
POPUP "Zobrazit"
BEGIN
MENUITEM "Standardní", IDM_VIEW_STANDARD, CHECKED
MENUITEM "Vědecká", IDM_VIEW_SCIENTIFIC, CHECKED
MENUITEM "Standardní", IDM_VIEW_STANDARD
MENUITEM "Vědecká", IDM_VIEW_SCIENTIFIC
MENUITEM "Převody", IDM_VIEW_CONVERSION
MENUITEM SEPARATOR
MENUITEM "Seskupování číslic", IDM_VIEW_GROUP, CHECKED

View File

@@ -330,8 +330,8 @@ BEGIN
END
POPUP "Ansicht"
BEGIN
MENUITEM "Standard", IDM_VIEW_STANDARD, CHECKED
MENUITEM "Wissenschaftlich", IDM_VIEW_SCIENTIFIC, CHECKED
MENUITEM "Standard", IDM_VIEW_STANDARD
MENUITEM "Wissenschaftlich", IDM_VIEW_SCIENTIFIC
MENUITEM "Konversion", IDM_VIEW_CONVERSION
MENUITEM SEPARATOR
MENUITEM "Hex\tF5", IDM_VIEW_HEX, CHECKED
@@ -362,8 +362,8 @@ BEGIN
END
POPUP "Ansicht"
BEGIN
MENUITEM "Standard", IDM_VIEW_STANDARD, CHECKED
MENUITEM "Wissenschaftlich", IDM_VIEW_SCIENTIFIC, CHECKED
MENUITEM "Standard", IDM_VIEW_STANDARD
MENUITEM "Wissenschaftlich", IDM_VIEW_SCIENTIFIC
MENUITEM "Konversion", IDM_VIEW_CONVERSION
MENUITEM SEPARATOR
MENUITEM "Hex\tF5", IDM_VIEW_HEX, CHECKED
@@ -395,8 +395,8 @@ BEGIN
END
POPUP "Ansicht"
BEGIN
MENUITEM "Standard", IDM_VIEW_STANDARD, CHECKED
MENUITEM "Wissenschaftlich", IDM_VIEW_SCIENTIFIC, CHECKED
MENUITEM "Standard", IDM_VIEW_STANDARD
MENUITEM "Wissenschaftlich", IDM_VIEW_SCIENTIFIC
MENUITEM "Konversion", IDM_VIEW_CONVERSION
MENUITEM SEPARATOR
MENUITEM "Zifferngruppierung", IDM_VIEW_GROUP, CHECKED

View File

@@ -330,8 +330,8 @@ BEGIN
END
POPUP "View"
BEGIN
MENUITEM "Τυπική", IDM_VIEW_STANDARD, CHECKED
MENUITEM "Επιστημονική", IDM_VIEW_SCIENTIFIC, CHECKED
MENUITEM "Τυπική", IDM_VIEW_STANDARD
MENUITEM "Επιστημονική", IDM_VIEW_SCIENTIFIC
MENUITEM "Μετατροπή", IDM_VIEW_CONVERSION
MENUITEM SEPARATOR
MENUITEM "Hex\tF5", IDM_VIEW_HEX, CHECKED
@@ -362,8 +362,8 @@ BEGIN
END
POPUP "View"
BEGIN
MENUITEM "Τυπική", IDM_VIEW_STANDARD, CHECKED
MENUITEM "Επιστημονική", IDM_VIEW_SCIENTIFIC, CHECKED
MENUITEM "Τυπική", IDM_VIEW_STANDARD
MENUITEM "Επιστημονική", IDM_VIEW_SCIENTIFIC
MENUITEM "Μετατροπή", IDM_VIEW_CONVERSION
MENUITEM SEPARATOR
MENUITEM "Δεκαεξαδικό\tF5", IDM_VIEW_HEX, CHECKED
@@ -395,8 +395,8 @@ BEGIN
END
POPUP "View"
BEGIN
MENUITEM "Τυπική", IDM_VIEW_STANDARD, CHECKED
MENUITEM "Επιστημονική", IDM_VIEW_SCIENTIFIC, CHECKED
MENUITEM "Τυπική", IDM_VIEW_STANDARD
MENUITEM "Επιστημονική", IDM_VIEW_SCIENTIFIC
MENUITEM "Μετατροπή", IDM_VIEW_CONVERSION
MENUITEM SEPARATOR
MENUITEM "Ομαδοποίηση ψηφίων", IDM_VIEW_GROUP, CHECKED

View File

@@ -330,8 +330,8 @@ BEGIN
END
POPUP "View"
BEGIN
MENUITEM "Standard", IDM_VIEW_STANDARD, CHECKED
MENUITEM "Scientific", IDM_VIEW_SCIENTIFIC, CHECKED
MENUITEM "Standard", IDM_VIEW_STANDARD
MENUITEM "Scientific", IDM_VIEW_SCIENTIFIC
MENUITEM "Conversion", IDM_VIEW_CONVERSION
MENUITEM SEPARATOR
MENUITEM "Hex\tF5", IDM_VIEW_HEX, CHECKED
@@ -362,8 +362,8 @@ BEGIN
END
POPUP "View"
BEGIN
MENUITEM "Standard", IDM_VIEW_STANDARD, CHECKED
MENUITEM "Scientific", IDM_VIEW_SCIENTIFIC, CHECKED
MENUITEM "Standard", IDM_VIEW_STANDARD
MENUITEM "Scientific", IDM_VIEW_SCIENTIFIC
MENUITEM "Conversion", IDM_VIEW_CONVERSION
MENUITEM SEPARATOR
MENUITEM "Hex\tF5", IDM_VIEW_HEX, CHECKED
@@ -395,8 +395,8 @@ BEGIN
END
POPUP "View"
BEGIN
MENUITEM "Standard", IDM_VIEW_STANDARD, CHECKED
MENUITEM "Scientific", IDM_VIEW_SCIENTIFIC, CHECKED
MENUITEM "Standard", IDM_VIEW_STANDARD
MENUITEM "Scientific", IDM_VIEW_SCIENTIFIC
MENUITEM "Conversion", IDM_VIEW_CONVERSION
MENUITEM SEPARATOR
MENUITEM "Group digits", IDM_VIEW_GROUP, CHECKED

View File

@@ -336,8 +336,8 @@ BEGIN
END
POPUP "Ver"
BEGIN
MENUITEM "Estándar", IDM_VIEW_STANDARD, CHECKED
MENUITEM "Científica", IDM_VIEW_SCIENTIFIC, CHECKED
MENUITEM "Estándar", IDM_VIEW_STANDARD
MENUITEM "Científica", IDM_VIEW_SCIENTIFIC
MENUITEM "Conversión", IDM_VIEW_CONVERSION
MENUITEM SEPARATOR
MENUITEM "Hexadecimal\tF5", IDM_VIEW_HEX, CHECKED
@@ -368,8 +368,8 @@ BEGIN
END
POPUP "Ver"
BEGIN
MENUITEM "Estándar", IDM_VIEW_STANDARD, CHECKED
MENUITEM "Científica", IDM_VIEW_SCIENTIFIC, CHECKED
MENUITEM "Estándar", IDM_VIEW_STANDARD
MENUITEM "Científica", IDM_VIEW_SCIENTIFIC
MENUITEM "Conversión", IDM_VIEW_CONVERSION
MENUITEM SEPARATOR
MENUITEM "Hexadecimal\tF5", IDM_VIEW_HEX, CHECKED
@@ -401,8 +401,8 @@ BEGIN
END
POPUP "Ver"
BEGIN
MENUITEM "Estándar", IDM_VIEW_STANDARD, CHECKED
MENUITEM "Científica", IDM_VIEW_SCIENTIFIC, CHECKED
MENUITEM "Estándar", IDM_VIEW_STANDARD
MENUITEM "Científica", IDM_VIEW_SCIENTIFIC
MENUITEM "Conversión", IDM_VIEW_CONVERSION
MENUITEM SEPARATOR
MENUITEM "Agrupar dígitos", IDM_VIEW_GROUP, CHECKED
@@ -488,9 +488,9 @@ BEGIN
IDS_AREA_SQUARE_METER "Metros cuadrado"
IDS_AREA_SQUARE_MILES "Millas cuadradas"
IDS_AREA_SQUARE_MILLIMETERS "Milímetros cuadrados"
IDS_AREA_SQUARE_SHAKU "Square shaku"
IDS_AREA_SQUARE_TSUEN "Square tsuen"
IDS_AREA_SQUARE_VA "Square va" /* ??? (unused in the source code) */
IDS_AREA_SQUARE_SHAKU "Shaku cuadrado"
IDS_AREA_SQUARE_TSUEN "Tsuen cuadrados"
IDS_AREA_SQUARE_VA "Va cuadrados" /* ??? (unused in the source code) */
IDS_AREA_SQUARE_YARD "Yarda cuadrada"
IDS_AREA_TAN "Tan"
IDS_AREA_TSUBO "Tsubo"

View File

@@ -330,8 +330,8 @@ BEGIN
END
POPUP "Affichage"
BEGIN
MENUITEM "Standard", IDM_VIEW_STANDARD, CHECKED
MENUITEM "Scientifique", IDM_VIEW_SCIENTIFIC, CHECKED
MENUITEM "Standard", IDM_VIEW_STANDARD
MENUITEM "Scientifique", IDM_VIEW_SCIENTIFIC
MENUITEM "Conversion", IDM_VIEW_CONVERSION
MENUITEM SEPARATOR
MENUITEM "Hexadécimal\tF5", IDM_VIEW_HEX, CHECKED
@@ -362,8 +362,8 @@ BEGIN
END
POPUP "Affichage"
BEGIN
MENUITEM "Standard", IDM_VIEW_STANDARD, CHECKED
MENUITEM "Scientifique", IDM_VIEW_SCIENTIFIC, CHECKED
MENUITEM "Standard", IDM_VIEW_STANDARD
MENUITEM "Scientifique", IDM_VIEW_SCIENTIFIC
MENUITEM "Conversion", IDM_VIEW_CONVERSION
MENUITEM SEPARATOR
MENUITEM "Hexadécimal\tF5", IDM_VIEW_HEX, CHECKED
@@ -395,8 +395,8 @@ BEGIN
END
POPUP "Affichage"
BEGIN
MENUITEM "Standard", IDM_VIEW_STANDARD, CHECKED
MENUITEM "Scientifique", IDM_VIEW_SCIENTIFIC, CHECKED
MENUITEM "Standard", IDM_VIEW_STANDARD
MENUITEM "Scientifique", IDM_VIEW_SCIENTIFIC
MENUITEM "Conversion", IDM_VIEW_CONVERSION
MENUITEM SEPARATOR
MENUITEM "Grouper les chiffres", IDM_VIEW_GROUP, CHECKED

View File

@@ -332,8 +332,8 @@ BEGIN
END
POPUP "תצוגה"
BEGIN
MENUITEM "רגילה", IDM_VIEW_STANDARD, CHECKED
MENUITEM "מדעית", IDM_VIEW_SCIENTIFIC, CHECKED
MENUITEM "רגילה", IDM_VIEW_STANDARD
MENUITEM "מדעית", IDM_VIEW_SCIENTIFIC
MENUITEM "המרה", IDM_VIEW_CONVERSION
MENUITEM SEPARATOR
MENUITEM "הקס\tF5", IDM_VIEW_HEX, CHECKED
@@ -364,8 +364,8 @@ BEGIN
END
POPUP "תצוגה"
BEGIN
MENUITEM "רגילה", IDM_VIEW_STANDARD, CHECKED
MENUITEM "מדעית", IDM_VIEW_SCIENTIFIC, CHECKED
MENUITEM "רגילה", IDM_VIEW_STANDARD
MENUITEM "מדעית", IDM_VIEW_SCIENTIFIC
MENUITEM "המרה", IDM_VIEW_CONVERSION
MENUITEM SEPARATOR
MENUITEM "הקס\tF5", IDM_VIEW_HEX, CHECKED
@@ -397,8 +397,8 @@ BEGIN
END
POPUP "תצוגה"
BEGIN
MENUITEM "רגילה", IDM_VIEW_STANDARD, CHECKED
MENUITEM "מדעית", IDM_VIEW_SCIENTIFIC, CHECKED
MENUITEM "רגילה", IDM_VIEW_STANDARD
MENUITEM "מדעית", IDM_VIEW_SCIENTIFIC
MENUITEM "המרה", IDM_VIEW_CONVERSION
MENUITEM SEPARATOR
MENUITEM "קיבוץ ספרות", IDM_VIEW_GROUP, CHECKED

View File

@@ -338,8 +338,8 @@ BEGIN
END
POPUP "&Nézet"
BEGIN
MENUITEM "&Szokásos", IDM_VIEW_STANDARD, CHECKED
MENUITEM "&Tudományos", IDM_VIEW_SCIENTIFIC, CHECKED
MENUITEM "&Szokásos", IDM_VIEW_STANDARD
MENUITEM "&Tudományos", IDM_VIEW_SCIENTIFIC
MENUITEM "Át&váltás", IDM_VIEW_CONVERSION
MENUITEM SEPARATOR
MENUITEM "&Hexadecimális\tF5", IDM_VIEW_HEX, CHECKED
@@ -370,8 +370,8 @@ BEGIN
END
POPUP "&Nézet"
BEGIN
MENUITEM "&Szokásos", IDM_VIEW_STANDARD, CHECKED
MENUITEM "&Tudományos", IDM_VIEW_SCIENTIFIC, CHECKED
MENUITEM "&Szokásos", IDM_VIEW_STANDARD
MENUITEM "&Tudományos", IDM_VIEW_SCIENTIFIC
MENUITEM "Át&váltás", IDM_VIEW_CONVERSION
MENUITEM SEPARATOR
MENUITEM "&Hexadecimális\tF5", IDM_VIEW_HEX, CHECKED
@@ -403,8 +403,8 @@ BEGIN
END
POPUP "&Nézet"
BEGIN
MENUITEM "&Szokásos", IDM_VIEW_STANDARD, CHECKED
MENUITEM "&Tudományos", IDM_VIEW_SCIENTIFIC, CHECKED
MENUITEM "&Szokásos", IDM_VIEW_STANDARD
MENUITEM "&Tudományos", IDM_VIEW_SCIENTIFIC
MENUITEM "Át&váltás", IDM_VIEW_CONVERSION
MENUITEM SEPARATOR
MENUITEM "Számjegyek &csoportosítása", IDM_VIEW_GROUP, CHECKED

View File

@@ -330,8 +330,8 @@ BEGIN
END
POPUP "Visualizza"
BEGIN
MENUITEM "Standard", IDM_VIEW_STANDARD, CHECKED
MENUITEM "Scientifica", IDM_VIEW_SCIENTIFIC, CHECKED
MENUITEM "Standard", IDM_VIEW_STANDARD
MENUITEM "Scientifica", IDM_VIEW_SCIENTIFIC
MENUITEM "Conversione", IDM_VIEW_CONVERSION
MENUITEM SEPARATOR
MENUITEM "Hex\tF5", IDM_VIEW_HEX, CHECKED
@@ -362,8 +362,8 @@ BEGIN
END
POPUP "Visualizza"
BEGIN
MENUITEM "Standard", IDM_VIEW_STANDARD, CHECKED
MENUITEM "Scientifica", IDM_VIEW_SCIENTIFIC, CHECKED
MENUITEM "Standard", IDM_VIEW_STANDARD
MENUITEM "Scientifica", IDM_VIEW_SCIENTIFIC
MENUITEM "Conversione", IDM_VIEW_CONVERSION
MENUITEM SEPARATOR
MENUITEM "Hex\tF5", IDM_VIEW_HEX, CHECKED
@@ -395,8 +395,8 @@ BEGIN
END
POPUP "Visualizza"
BEGIN
MENUITEM "Standard", IDM_VIEW_STANDARD, CHECKED
MENUITEM "Scientifica", IDM_VIEW_SCIENTIFIC, CHECKED
MENUITEM "Standard", IDM_VIEW_STANDARD
MENUITEM "Scientifica", IDM_VIEW_SCIENTIFIC
MENUITEM "Conversione", IDM_VIEW_CONVERSION
MENUITEM SEPARATOR
MENUITEM "Raggruppamento cifre", IDM_VIEW_GROUP, CHECKED

View File

@@ -330,8 +330,8 @@ BEGIN
END
POPUP "表示(&V)"
BEGIN
MENUITEM "標準(&T)", IDM_VIEW_STANDARD, CHECKED
MENUITEM "関数電卓(&S)", IDM_VIEW_SCIENTIFIC, CHECKED
MENUITEM "標準(&T)", IDM_VIEW_STANDARD
MENUITEM "関数電卓(&S)", IDM_VIEW_SCIENTIFIC
MENUITEM "変換(&C)", IDM_VIEW_CONVERSION
MENUITEM SEPARATOR
MENUITEM "1&6進\tF5", IDM_VIEW_HEX, CHECKED
@@ -362,8 +362,8 @@ BEGIN
END
POPUP "表示(&V)"
BEGIN
MENUITEM "標準(&T)", IDM_VIEW_STANDARD, CHECKED
MENUITEM "関数電卓(&S)", IDM_VIEW_SCIENTIFIC, CHECKED
MENUITEM "標準(&T)", IDM_VIEW_STANDARD
MENUITEM "関数電卓(&S)", IDM_VIEW_SCIENTIFIC
MENUITEM "変換(&C)", IDM_VIEW_CONVERSION
MENUITEM SEPARATOR
MENUITEM "1&6進\tF5", IDM_VIEW_HEX, CHECKED
@@ -395,8 +395,8 @@ BEGIN
END
POPUP "表示"
BEGIN
MENUITEM "標準(&T)", IDM_VIEW_STANDARD, CHECKED
MENUITEM "関数電卓(&S)", IDM_VIEW_SCIENTIFIC, CHECKED
MENUITEM "標準(&T)", IDM_VIEW_STANDARD
MENUITEM "関数電卓(&S)", IDM_VIEW_SCIENTIFIC
MENUITEM "変換(&C)", IDM_VIEW_CONVERSION
MENUITEM SEPARATOR
MENUITEM "桁を区切る(&I)", IDM_VIEW_GROUP, CHECKED

View File

@@ -332,8 +332,8 @@ BEGIN
END
POPUP "보기"
BEGIN
MENUITEM "일반", IDM_VIEW_STANDARD, CHECKED
MENUITEM "공학", IDM_VIEW_SCIENTIFIC, CHECKED
MENUITEM "일반", IDM_VIEW_STANDARD
MENUITEM "공학", IDM_VIEW_SCIENTIFIC
MENUITEM "전환", IDM_VIEW_CONVERSION
MENUITEM SEPARATOR
MENUITEM "Hex\tF5", IDM_VIEW_HEX, CHECKED
@@ -364,8 +364,8 @@ BEGIN
END
POPUP "보기"
BEGIN
MENUITEM "일반", IDM_VIEW_STANDARD, CHECKED
MENUITEM "공학", IDM_VIEW_SCIENTIFIC, CHECKED
MENUITEM "일반", IDM_VIEW_STANDARD
MENUITEM "공학", IDM_VIEW_SCIENTIFIC
MENUITEM "전환", IDM_VIEW_CONVERSION
MENUITEM SEPARATOR
MENUITEM "Hex\tF5", IDM_VIEW_HEX, CHECKED
@@ -397,8 +397,8 @@ BEGIN
END
POPUP "보기"
BEGIN
MENUITEM "일반", IDM_VIEW_STANDARD, CHECKED
MENUITEM "공학", IDM_VIEW_SCIENTIFIC, CHECKED
MENUITEM "일반", IDM_VIEW_STANDARD
MENUITEM "공학", IDM_VIEW_SCIENTIFIC
MENUITEM "전환", IDM_VIEW_CONVERSION
MENUITEM SEPARATOR
MENUITEM "자릿수 구분 단위", IDM_VIEW_GROUP, CHECKED

View File

@@ -330,8 +330,8 @@ BEGIN
END
POPUP "Beeld"
BEGIN
MENUITEM "Standaard", IDM_VIEW_STANDARD, CHECKED
MENUITEM "Wetenschappelijk", IDM_VIEW_SCIENTIFIC, CHECKED
MENUITEM "Standaard", IDM_VIEW_STANDARD
MENUITEM "Wetenschappelijk", IDM_VIEW_SCIENTIFIC
MENUITEM "Converteren", IDM_VIEW_CONVERSION
MENUITEM SEPARATOR
MENUITEM "Hex\tF5", IDM_VIEW_HEX, CHECKED
@@ -362,8 +362,8 @@ BEGIN
END
POPUP "Beeld"
BEGIN
MENUITEM "Standaard", IDM_VIEW_STANDARD, CHECKED
MENUITEM "Wetenschappelijk", IDM_VIEW_SCIENTIFIC, CHECKED
MENUITEM "Standaard", IDM_VIEW_STANDARD
MENUITEM "Wetenschappelijk", IDM_VIEW_SCIENTIFIC
MENUITEM "Converteren", IDM_VIEW_CONVERSION
MENUITEM SEPARATOR
MENUITEM "Hex\tF5", IDM_VIEW_HEX, CHECKED
@@ -395,8 +395,8 @@ BEGIN
END
POPUP "View"
BEGIN
MENUITEM "Standaard", IDM_VIEW_STANDARD, CHECKED
MENUITEM "Wetenschappelijk", IDM_VIEW_SCIENTIFIC, CHECKED
MENUITEM "Standaard", IDM_VIEW_STANDARD
MENUITEM "Wetenschappelijk", IDM_VIEW_SCIENTIFIC
MENUITEM "Converteren", IDM_VIEW_CONVERSION
MENUITEM SEPARATOR
MENUITEM "Cijfergroeperingen", IDM_VIEW_GROUP, CHECKED

View File

@@ -330,8 +330,8 @@ BEGIN
END
POPUP "Vis"
BEGIN
MENUITEM "Standard", IDM_VIEW_STANDARD, CHECKED
MENUITEM "Vitenskapelig", IDM_VIEW_SCIENTIFIC, CHECKED
MENUITEM "Standard", IDM_VIEW_STANDARD
MENUITEM "Vitenskapelig", IDM_VIEW_SCIENTIFIC
MENUITEM "Konvertering", IDM_VIEW_CONVERSION
MENUITEM SEPARATOR
MENUITEM "Heksadesimalt\tF5", IDM_VIEW_HEX, CHECKED
@@ -362,8 +362,8 @@ BEGIN
END
POPUP "Vis"
BEGIN
MENUITEM "Standard", IDM_VIEW_STANDARD, CHECKED
MENUITEM "Vitenskapelig", IDM_VIEW_SCIENTIFIC, CHECKED
MENUITEM "Standard", IDM_VIEW_STANDARD
MENUITEM "Vitenskapelig", IDM_VIEW_SCIENTIFIC
MENUITEM "konvertering", IDM_VIEW_CONVERSION
MENUITEM SEPARATOR
MENUITEM "Heksadesimalt\tF5", IDM_VIEW_HEX, CHECKED
@@ -395,8 +395,8 @@ BEGIN
END
POPUP "Vis"
BEGIN
MENUITEM "Standard", IDM_VIEW_STANDARD, CHECKED
MENUITEM "Vitenskapelig", IDM_VIEW_SCIENTIFIC, CHECKED
MENUITEM "Standard", IDM_VIEW_STANDARD
MENUITEM "Vitenskapelig", IDM_VIEW_SCIENTIFIC
MENUITEM "Konvertering", IDM_VIEW_CONVERSION
MENUITEM SEPARATOR
MENUITEM "Siffergruppering", IDM_VIEW_GROUP, CHECKED
@@ -405,7 +405,7 @@ BEGIN
BEGIN
MENUITEM "Emner i hjelp", IDM_HELP_HELP
MENUITEM SEPARATOR
MENUITEM "Om Reactos Kalkulator", IDM_HELP_ABOUT
MENUITEM "Om ReactOS Kalkulator", IDM_HELP_ABOUT
END
END

View File

@@ -339,8 +339,8 @@ BEGIN
END
POPUP "Wygląd"
BEGIN
MENUITEM "Standardowy", IDM_VIEW_STANDARD, CHECKED
MENUITEM "Naukowy", IDM_VIEW_SCIENTIFIC, CHECKED
MENUITEM "Standardowy", IDM_VIEW_STANDARD
MENUITEM "Naukowy", IDM_VIEW_SCIENTIFIC
MENUITEM "Przeliczanie", IDM_VIEW_CONVERSION
MENUITEM SEPARATOR
MENUITEM "Szesnastkowy\tF5", IDM_VIEW_HEX, CHECKED
@@ -371,8 +371,8 @@ BEGIN
END
POPUP "Wygląd"
BEGIN
MENUITEM "Standardowy", IDM_VIEW_STANDARD, CHECKED
MENUITEM "Naukowy", IDM_VIEW_SCIENTIFIC, CHECKED
MENUITEM "Standardowy", IDM_VIEW_STANDARD
MENUITEM "Naukowy", IDM_VIEW_SCIENTIFIC
MENUITEM "Przeliczanie", IDM_VIEW_CONVERSION
MENUITEM SEPARATOR
MENUITEM "Szesnastkowo\tF5", IDM_VIEW_HEX, CHECKED
@@ -404,8 +404,8 @@ BEGIN
END
POPUP "Wygląd"
BEGIN
MENUITEM "Standardowy", IDM_VIEW_STANDARD, CHECKED
MENUITEM "Naukowy", IDM_VIEW_SCIENTIFIC, CHECKED
MENUITEM "Standardowy", IDM_VIEW_STANDARD
MENUITEM "Naukowy", IDM_VIEW_SCIENTIFIC
MENUITEM "Przeliczanie", IDM_VIEW_CONVERSION
MENUITEM SEPARATOR
MENUITEM "Grupowanie cyfr", IDM_VIEW_GROUP, CHECKED

View File

@@ -332,8 +332,8 @@ BEGIN
END
POPUP "Visualizar"
BEGIN
MENUITEM "Padrão", IDM_VIEW_STANDARD, CHECKED
MENUITEM "Científica", IDM_VIEW_SCIENTIFIC, CHECKED
MENUITEM "Padrão", IDM_VIEW_STANDARD
MENUITEM "Científica", IDM_VIEW_SCIENTIFIC
MENUITEM "Conversão", IDM_VIEW_CONVERSION
MENUITEM SEPARATOR
MENUITEM "Hex\tF5", IDM_VIEW_HEX, CHECKED
@@ -364,8 +364,8 @@ BEGIN
END
POPUP "Visualizar"
BEGIN
MENUITEM "Padrão", IDM_VIEW_STANDARD, CHECKED
MENUITEM "Científica", IDM_VIEW_SCIENTIFIC, CHECKED
MENUITEM "Padrão", IDM_VIEW_STANDARD
MENUITEM "Científica", IDM_VIEW_SCIENTIFIC
MENUITEM "Conversão", IDM_VIEW_CONVERSION
MENUITEM SEPARATOR
MENUITEM "Hex\tF5", IDM_VIEW_HEX, CHECKED
@@ -397,8 +397,8 @@ BEGIN
END
POPUP "Visualizar"
BEGIN
MENUITEM "Padrão", IDM_VIEW_STANDARD, CHECKED
MENUITEM "Científica", IDM_VIEW_SCIENTIFIC, CHECKED
MENUITEM "Padrão", IDM_VIEW_STANDARD
MENUITEM "Científica", IDM_VIEW_SCIENTIFIC
MENUITEM "Conversão", IDM_VIEW_CONVERSION
MENUITEM SEPARATOR
MENUITEM "Agrupar dígitos", IDM_VIEW_GROUP, CHECKED

View File

@@ -331,8 +331,8 @@ BEGIN
END
POPUP "&Afișare"
BEGIN
MENUITEM "Mod st&andard", IDM_VIEW_STANDARD, CHECKED
MENUITEM "Mod știi&nțific", IDM_VIEW_SCIENTIFIC, CHECKED
MENUITEM "Mod st&andard", IDM_VIEW_STANDARD
MENUITEM "Mod știi&nțific", IDM_VIEW_SCIENTIFIC
MENUITEM "Con&versie", IDM_VIEW_CONVERSION
MENUITEM SEPARATOR
MENUITEM "&Hexazecimal\tF5", IDM_VIEW_HEX, CHECKED
@@ -363,8 +363,8 @@ BEGIN
END
POPUP "&Afișare"
BEGIN
MENUITEM "Mod st&andard", IDM_VIEW_STANDARD, CHECKED
MENUITEM "Mod știi&nțific", IDM_VIEW_SCIENTIFIC, CHECKED
MENUITEM "Mod st&andard", IDM_VIEW_STANDARD
MENUITEM "Mod știi&nțific", IDM_VIEW_SCIENTIFIC
MENUITEM "Con&versie", IDM_VIEW_CONVERSION
MENUITEM SEPARATOR
MENUITEM "&Hexazecimal\tF5", IDM_VIEW_HEX, CHECKED
@@ -396,8 +396,8 @@ BEGIN
END
POPUP "&Afișare"
BEGIN
MENUITEM "Mod st&andard", IDM_VIEW_STANDARD, CHECKED
MENUITEM "Mod știi&nțific", IDM_VIEW_SCIENTIFIC, CHECKED
MENUITEM "Mod st&andard", IDM_VIEW_STANDARD
MENUITEM "Mod știi&nțific", IDM_VIEW_SCIENTIFIC
MENUITEM "Con&versie", IDM_VIEW_CONVERSION
MENUITEM SEPARATOR
MENUITEM "Grupează &cifre", IDM_VIEW_GROUP, CHECKED

View File

@@ -330,8 +330,8 @@ BEGIN
END
POPUP "Вид"
BEGIN
MENUITEM "Обычный", IDM_VIEW_STANDARD, CHECKED
MENUITEM "Научный", IDM_VIEW_SCIENTIFIC, CHECKED
MENUITEM "Обычный", IDM_VIEW_STANDARD
MENUITEM "Научный", IDM_VIEW_SCIENTIFIC
MENUITEM "Преобразование", IDM_VIEW_CONVERSION
MENUITEM SEPARATOR
MENUITEM "Шестнадцатеричный\tF5", IDM_VIEW_HEX, CHECKED
@@ -362,8 +362,8 @@ BEGIN
END
POPUP "Вид"
BEGIN
MENUITEM "Обычный", IDM_VIEW_STANDARD, CHECKED
MENUITEM "Научный", IDM_VIEW_SCIENTIFIC, CHECKED
MENUITEM "Обычный", IDM_VIEW_STANDARD
MENUITEM "Научный", IDM_VIEW_SCIENTIFIC
MENUITEM "Преобразование", IDM_VIEW_CONVERSION
MENUITEM SEPARATOR
MENUITEM "Шестнадцатеричный\tF5", IDM_VIEW_HEX, CHECKED
@@ -395,8 +395,8 @@ BEGIN
END
POPUP "Вид"
BEGIN
MENUITEM "Обычный", IDM_VIEW_STANDARD, CHECKED
MENUITEM "Научный", IDM_VIEW_SCIENTIFIC, CHECKED
MENUITEM "Обычный", IDM_VIEW_STANDARD
MENUITEM "Научный", IDM_VIEW_SCIENTIFIC
MENUITEM "Преобразование", IDM_VIEW_CONVERSION
MENUITEM SEPARATOR
MENUITEM "Количество цифр в группе", IDM_VIEW_GROUP, CHECKED

View File

@@ -337,8 +337,8 @@ BEGIN
END
POPUP "Zobraziť"
BEGIN
MENUITEM "Štandardná", IDM_VIEW_STANDARD, CHECKED
MENUITEM "Vedecká", IDM_VIEW_SCIENTIFIC, CHECKED
MENUITEM "Štandardná", IDM_VIEW_STANDARD
MENUITEM "Vedecká", IDM_VIEW_SCIENTIFIC
MENUITEM "Prevody", IDM_VIEW_CONVERSION
MENUITEM SEPARATOR
MENUITEM "Šestnástková\tF5", IDM_VIEW_HEX, CHECKED
@@ -369,8 +369,8 @@ BEGIN
END
POPUP "Zobraziť"
BEGIN
MENUITEM "Štandardná", IDM_VIEW_STANDARD, CHECKED
MENUITEM "Vedecká", IDM_VIEW_SCIENTIFIC, CHECKED
MENUITEM "Štandardná", IDM_VIEW_STANDARD
MENUITEM "Vedecká", IDM_VIEW_SCIENTIFIC
MENUITEM "Prevody", IDM_VIEW_CONVERSION
MENUITEM SEPARATOR
MENUITEM "Šestnástková\tF5", IDM_VIEW_HEX, CHECKED
@@ -402,8 +402,8 @@ BEGIN
END
POPUP "Zobraziť"
BEGIN
MENUITEM "Štandardná", IDM_VIEW_STANDARD, CHECKED
MENUITEM "Vedecká", IDM_VIEW_SCIENTIFIC, CHECKED
MENUITEM "Štandardná", IDM_VIEW_STANDARD
MENUITEM "Vedecká", IDM_VIEW_SCIENTIFIC
MENUITEM "Prevody", IDM_VIEW_CONVERSION
MENUITEM SEPARATOR
MENUITEM "Zoskupovať číslice", IDM_VIEW_GROUP, CHECKED

View File

@@ -334,8 +334,8 @@ BEGIN
END
POPUP "Modifko"
BEGIN
MENUITEM "Standart", IDM_VIEW_STANDARD, CHECKED
MENUITEM "Shkencor", IDM_VIEW_SCIENTIFIC, CHECKED
MENUITEM "Standart", IDM_VIEW_STANDARD
MENUITEM "Shkencor", IDM_VIEW_SCIENTIFIC
MENUITEM "Konvertim", IDM_VIEW_CONVERSION
MENUITEM SEPARATOR
MENUITEM "Hex\tF5", IDM_VIEW_HEX, CHECKED
@@ -366,8 +366,8 @@ BEGIN
END
POPUP "Vëzhgo"
BEGIN
MENUITEM "Standart", IDM_VIEW_STANDARD, CHECKED
MENUITEM "Shkencor", IDM_VIEW_SCIENTIFIC, CHECKED
MENUITEM "Standart", IDM_VIEW_STANDARD
MENUITEM "Shkencor", IDM_VIEW_SCIENTIFIC
MENUITEM "Konverto", IDM_VIEW_CONVERSION
MENUITEM SEPARATOR
MENUITEM "Hex\tF5", IDM_VIEW_HEX, CHECKED
@@ -399,8 +399,8 @@ BEGIN
END
POPUP "Vëzhgo"
BEGIN
MENUITEM "Standar", IDM_VIEW_STANDARD, CHECKED
MENUITEM "Shkencor", IDM_VIEW_SCIENTIFIC, CHECKED
MENUITEM "Standar", IDM_VIEW_STANDARD
MENUITEM "Shkencor", IDM_VIEW_SCIENTIFIC
MENUITEM "Konverto", IDM_VIEW_CONVERSION
MENUITEM SEPARATOR
MENUITEM "Grupim numeror", IDM_VIEW_GROUP, CHECKED

View File

@@ -337,8 +337,8 @@ BEGIN
END
POPUP "Visa"
BEGIN
MENUITEM "Standard", IDM_VIEW_STANDARD, CHECKED
MENUITEM "Vetenskaplig", IDM_VIEW_SCIENTIFIC, CHECKED
MENUITEM "Standard", IDM_VIEW_STANDARD
MENUITEM "Vetenskaplig", IDM_VIEW_SCIENTIFIC
MENUITEM "Konvertering", IDM_VIEW_CONVERSION
MENUITEM SEPARATOR
MENUITEM "Hexadecimal\tF5", IDM_VIEW_HEX, CHECKED
@@ -369,8 +369,8 @@ BEGIN
END
POPUP "Vis"
BEGIN
MENUITEM "Standard", IDM_VIEW_STANDARD, CHECKED
MENUITEM "Vetenskaplig", IDM_VIEW_SCIENTIFIC, CHECKED
MENUITEM "Standard", IDM_VIEW_STANDARD
MENUITEM "Vetenskaplig", IDM_VIEW_SCIENTIFIC
MENUITEM "Konvertering", IDM_VIEW_CONVERSION
MENUITEM SEPARATOR
MENUITEM "Hexadecimal\tF5", IDM_VIEW_HEX, CHECKED
@@ -402,8 +402,8 @@ BEGIN
END
POPUP "Visa"
BEGIN
MENUITEM "Standard", IDM_VIEW_STANDARD, CHECKED
MENUITEM "Vetenskapelig", IDM_VIEW_SCIENTIFIC, CHECKED
MENUITEM "Standard", IDM_VIEW_STANDARD
MENUITEM "Vetenskapelig", IDM_VIEW_SCIENTIFIC
MENUITEM "Konvertering", IDM_VIEW_CONVERSION
MENUITEM SEPARATOR
MENUITEM "Siffergruppering", IDM_VIEW_GROUP, CHECKED
@@ -412,7 +412,7 @@ BEGIN
BEGIN
MENUITEM "Visa hjälp", IDM_HELP_HELP
MENUITEM SEPARATOR
MENUITEM "Om Reactos Kalkylator", IDM_HELP_ABOUT
MENUITEM "Om ReactOS Kalkylator", IDM_HELP_ABOUT
END
END

View File

@@ -330,8 +330,8 @@ BEGIN
END
POPUP "&มุมมอง"
BEGIN
MENUITEM "แบบมาตรฐาน", IDM_VIEW_STANDARD, CHECKED
MENUITEM "แบบวิทยาศาสตร์", IDM_VIEW_SCIENTIFIC, CHECKED
MENUITEM "แบบมาตรฐาน", IDM_VIEW_STANDARD
MENUITEM "แบบวิทยาศาสตร์", IDM_VIEW_SCIENTIFIC
MENUITEM "ความเปลี่ยนแปลง", IDM_VIEW_CONVERSION
MENUITEM SEPARATOR
MENUITEM "ฐานสิบหก\tF5", IDM_VIEW_HEX, CHECKED
@@ -362,8 +362,8 @@ BEGIN
END
POPUP "&มุมมอง"
BEGIN
MENUITEM "แบบมาตรฐาน", IDM_VIEW_STANDARD, CHECKED
MENUITEM "แบบวิทยาศาสตร์", IDM_VIEW_SCIENTIFIC, CHECKED
MENUITEM "แบบมาตรฐาน", IDM_VIEW_STANDARD
MENUITEM "แบบวิทยาศาสตร์", IDM_VIEW_SCIENTIFIC
MENUITEM "ความเปลี่ยนแปลง", IDM_VIEW_CONVERSION
MENUITEM SEPARATOR
MENUITEM "ฐานสิบหก\tF5", IDM_VIEW_HEX, CHECKED
@@ -395,8 +395,8 @@ BEGIN
END
POPUP "&มุมมอง"
BEGIN
MENUITEM "แบบมาตรฐาน", IDM_VIEW_STANDARD, CHECKED
MENUITEM "แบบวิทยาศาสตร์", IDM_VIEW_SCIENTIFIC, CHECKED
MENUITEM "แบบมาตรฐาน", IDM_VIEW_STANDARD
MENUITEM "แบบวิทยาศาสตร์", IDM_VIEW_SCIENTIFIC
MENUITEM "ความเปลี่ยนแปลง", IDM_VIEW_CONVERSION
MENUITEM SEPARATOR
MENUITEM "แสดงหลักตัวเลข", IDM_VIEW_GROUP, CHECKED

View File

@@ -332,8 +332,8 @@ BEGIN
END
POPUP "&Görünüm"
BEGIN
MENUITEM "&Ölçünlü", IDM_VIEW_STANDARD, CHECKED
MENUITEM "&Bilimlik", IDM_VIEW_SCIENTIFIC, CHECKED
MENUITEM "&Ölçünlü", IDM_VIEW_STANDARD
MENUITEM "&Bilimlik", IDM_VIEW_SCIENTIFIC
MENUITEM "&Dönüştürme", IDM_VIEW_CONVERSION
MENUITEM SEPARATOR
MENUITEM "&Onaltılık\tF5", IDM_VIEW_HEX, CHECKED
@@ -364,8 +364,8 @@ BEGIN
END
POPUP "&Görünüm"
BEGIN
MENUITEM "&Ölçünlü", IDM_VIEW_STANDARD, CHECKED
MENUITEM "&Bilimlik", IDM_VIEW_SCIENTIFIC, CHECKED
MENUITEM "&Ölçünlü", IDM_VIEW_STANDARD
MENUITEM "&Bilimlik", IDM_VIEW_SCIENTIFIC
MENUITEM "&Dönüştürme", IDM_VIEW_CONVERSION
MENUITEM SEPARATOR
MENUITEM "&Onaltılık\tF5", IDM_VIEW_HEX, CHECKED
@@ -397,8 +397,8 @@ BEGIN
END
POPUP "&Görünüm"
BEGIN
MENUITEM "&Ölçünlü", IDM_VIEW_STANDARD, CHECKED
MENUITEM "&Bilimlik", IDM_VIEW_SCIENTIFIC, CHECKED
MENUITEM "&Ölçünlü", IDM_VIEW_STANDARD
MENUITEM "&Bilimlik", IDM_VIEW_SCIENTIFIC
MENUITEM "&Dönüştürme", IDM_VIEW_CONVERSION
MENUITEM SEPARATOR
MENUITEM "B&asamakları Takımla", IDM_VIEW_GROUP, CHECKED

View File

@@ -338,8 +338,8 @@ BEGIN
END
POPUP "Вигляд"
BEGIN
MENUITEM "Звичайний", IDM_VIEW_STANDARD, CHECKED
MENUITEM "Науковий", IDM_VIEW_SCIENTIFIC, CHECKED
MENUITEM "Звичайний", IDM_VIEW_STANDARD
MENUITEM "Науковий", IDM_VIEW_SCIENTIFIC
MENUITEM "Перетворення", IDM_VIEW_CONVERSION
MENUITEM SEPARATOR
MENUITEM "Шістнадцятковий\tF5", IDM_VIEW_HEX, CHECKED
@@ -370,8 +370,8 @@ BEGIN
END
POPUP "Вигляд"
BEGIN
MENUITEM "Звичайний", IDM_VIEW_STANDARD, CHECKED
MENUITEM "Науковий", IDM_VIEW_SCIENTIFIC, CHECKED
MENUITEM "Звичайний", IDM_VIEW_STANDARD
MENUITEM "Науковий", IDM_VIEW_SCIENTIFIC
MENUITEM "Перетворення", IDM_VIEW_CONVERSION
MENUITEM SEPARATOR
MENUITEM "Шістнадцятковий\tF5", IDM_VIEW_HEX, CHECKED
@@ -403,8 +403,8 @@ BEGIN
END
POPUP "Вигляд"
BEGIN
MENUITEM "Звичайний", IDM_VIEW_STANDARD, CHECKED
MENUITEM "Науковий", IDM_VIEW_SCIENTIFIC, CHECKED
MENUITEM "Звичайний", IDM_VIEW_STANDARD
MENUITEM "Науковий", IDM_VIEW_SCIENTIFIC
MENUITEM "Перетворення", IDM_VIEW_CONVERSION
MENUITEM SEPARATOR
MENUITEM "Кількість цифр у групі", IDM_VIEW_GROUP, CHECKED

View File

@@ -332,8 +332,8 @@ BEGIN
END
POPUP "查看"
BEGIN
MENUITEM "标准型", IDM_VIEW_STANDARD, CHECKED
MENUITEM "科学型", IDM_VIEW_SCIENTIFIC, CHECKED
MENUITEM "标准型", IDM_VIEW_STANDARD
MENUITEM "科学型", IDM_VIEW_SCIENTIFIC
MENUITEM "转换", IDM_VIEW_CONVERSION
MENUITEM SEPARATOR
MENUITEM "十六进制\tF5", IDM_VIEW_HEX, CHECKED
@@ -364,8 +364,8 @@ BEGIN
END
POPUP "查看"
BEGIN
MENUITEM "标准型", IDM_VIEW_STANDARD, CHECKED
MENUITEM "科学型", IDM_VIEW_SCIENTIFIC, CHECKED
MENUITEM "标准型", IDM_VIEW_STANDARD
MENUITEM "科学型", IDM_VIEW_SCIENTIFIC
MENUITEM "转换", IDM_VIEW_CONVERSION
MENUITEM SEPARATOR
MENUITEM "十六进制\tF5", IDM_VIEW_HEX, CHECKED
@@ -397,8 +397,8 @@ BEGIN
END
POPUP "查看"
BEGIN
MENUITEM "标准型", IDM_VIEW_STANDARD, CHECKED
MENUITEM "科学型", IDM_VIEW_SCIENTIFIC, CHECKED
MENUITEM "标准型", IDM_VIEW_STANDARD
MENUITEM "科学型", IDM_VIEW_SCIENTIFIC
MENUITEM "转换", IDM_VIEW_CONVERSION
MENUITEM SEPARATOR
MENUITEM "数字分组", IDM_VIEW_GROUP, CHECKED

View File

@@ -225,38 +225,40 @@ calc_t calc;
static void load_config(void)
{
TCHAR buf[32];
DWORD tmp;
#if _WIN32_WINNT >= 0x0500
HKEY hKey;
#endif
/* If no settings are found in the registry, then use the default options */
calc.layout = CALC_LAYOUT_STANDARD;
calc.usesep = FALSE;
/* Try to load last selected layout */
GetProfileString(TEXT("SciCalc"), TEXT("layout"), TEXT("0"), buf, SIZEOF(buf));
if (_stscanf(buf, TEXT("%lu"), &calc.layout) != 1)
calc.layout = CALC_LAYOUT_STANDARD;
/* Get the configuration based on what version of Windows that's being used */
if (RegOpenKeyEx(HKEY_CURRENT_USER, TEXT("SOFTWARE\\Microsoft\\Calc"), 0, KEY_QUERY_VALUE, &hKey) == ERROR_SUCCESS)
{
/* Try to load last selected layout */
tmp = sizeof(calc.layout);
if (RegQueryValueEx(hKey, TEXT("layout"), NULL, NULL, (LPBYTE)&calc.layout, &tmp) != ERROR_SUCCESS)
calc.layout = CALC_LAYOUT_STANDARD;
/* Try to load last selected formatting option */
GetProfileString(TEXT("SciCalc"), TEXT("UseSep"), TEXT("0"), buf, SIZEOF(buf));
if (_stscanf(buf, TEXT("%lu"), &tmp) != 1)
calc.usesep = FALSE;
else
calc.usesep = (tmp == 1) ? TRUE : FALSE;
/* Try to load last selected formatting option */
tmp = sizeof(calc.usesep);
if (RegQueryValueEx(hKey, TEXT("UseSep"), NULL, NULL, (LPBYTE)&calc.usesep, &tmp) != ERROR_SUCCESS)
calc.usesep = FALSE;
/* close the key */
RegCloseKey(hKey);
}
/* memory is empty at startup */
calc.is_memory = FALSE;
#if _WIN32_WINNT >= 0x0500
/* empty these values */
calc.sDecimal[0] = TEXT('\0');
calc.sThousand[0] = TEXT('\0');
/* try to open the registry */
if (RegOpenKeyEx(HKEY_CURRENT_USER,
TEXT("Control Panel\\International"),
0,
KEY_QUERY_VALUE,
&hKey) == ERROR_SUCCESS) {
if (RegOpenKeyEx(HKEY_CURRENT_USER, TEXT("Control Panel\\International"), 0, KEY_QUERY_VALUE, &hKey) == ERROR_SUCCESS)
{
/* get these values (ignore errors) */
tmp = sizeof(calc.sDecimal);
RegQueryValueEx(hKey, TEXT("sDecimal"), NULL, NULL, (LPBYTE)calc.sDecimal, &tmp);
@@ -277,20 +279,24 @@ static void load_config(void)
/* get the string lengths */
calc.sDecimal_len = _tcslen(calc.sDecimal);
calc.sThousand_len = _tcslen(calc.sThousand);
#else
/* acquire regional settings */
calc.sDecimal_len = GetProfileString(TEXT("intl"), TEXT("sDecimal"), TEXT("."), calc.sDecimal, SIZEOF(calc.sDecimal));
calc.sThousand_len = GetProfileString(TEXT("intl"), TEXT("sThousand"), TEXT(","), calc.sThousand, SIZEOF(calc.sThousand));
#endif
}
static void save_config(void)
{
TCHAR buf[32];
HKEY hKey;
DWORD sepValue;
_stprintf(buf, TEXT("%lu"), calc.layout);
WriteProfileString(TEXT("SciCalc"), TEXT("layout"), buf);
WriteProfileString(TEXT("SciCalc"), TEXT("UseSep"), (calc.usesep==TRUE) ? TEXT("1") : TEXT("0"));
if (RegCreateKeyEx(HKEY_CURRENT_USER, TEXT("SOFTWARE\\Microsoft\\Calc"), 0, NULL, REG_OPTION_NON_VOLATILE, KEY_SET_VALUE, NULL, &hKey, NULL) != ERROR_SUCCESS)
{
return;
}
sepValue = (calc.usesep) ? 1 : 0;
RegSetValueEx(hKey, TEXT("layout"), 0, REG_DWORD, (const BYTE*)&calc.layout, sizeof(calc.layout));
RegSetValueEx(hKey, TEXT("UseSep"), 0, REG_DWORD, (const BYTE*)&sepValue, sizeof(sepValue));
RegCloseKey(hKey);
}
static LRESULT post_key_press(LPARAM lParam, WORD idc)
@@ -657,7 +663,33 @@ static void update_menu(HWND hwnd)
HMENU hMenu = GetSubMenu(GetMenu(hwnd), 1);
unsigned int x;
for (x=0; x<SIZEOF(upd); x++) {
/* Sets the state of the layout in the menu based on the configuration file */
if (calc.layout == CALC_LAYOUT_SCIENTIFIC)
{
CheckMenuRadioItem(GetMenu(hwnd),
IDM_VIEW_STANDARD,
IDM_VIEW_CONVERSION,
IDM_VIEW_SCIENTIFIC,
MF_BYCOMMAND);
}
else if (calc.layout == CALC_LAYOUT_CONVERSION)
{
CheckMenuRadioItem(GetMenu(hwnd),
IDM_VIEW_STANDARD,
IDM_VIEW_CONVERSION,
IDM_VIEW_CONVERSION,
MF_BYCOMMAND);
}
else
{
CheckMenuRadioItem(GetMenu(hwnd),
IDM_VIEW_STANDARD,
IDM_VIEW_CONVERSION,
IDM_VIEW_STANDARD,
MF_BYCOMMAND);
}
for (x=3; x<SIZEOF(upd); x++) {
if (*(upd[x].sel) != upd[x].idc) {
CheckMenuItem(hMenu, upd[x].idm, MF_BYCOMMAND|MF_UNCHECKED);
SendMessage((HWND)GetDlgItem(hwnd,upd[x].idc),BM_SETCHECK,FALSE,0L);
@@ -1225,6 +1257,7 @@ static INT_PTR CALLBACK DlgMainProc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp)
{
unsigned int x;
RECT rc;
HMENU hMenu;
switch (msg) {
case WM_DRAWITEM:
@@ -1258,6 +1291,11 @@ static INT_PTR CALLBACK DlgMainProc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp)
/* set our calc icon */
SendMessage(hWnd, WM_SETICON, ICON_BIG, (LPARAM)LoadIcon(calc.hInstance, MAKEINTRESOURCE(IDI_CALC_BIG)));
SendMessage(hWnd, WM_SETICON, ICON_SMALL, (LPARAM)LoadIcon(calc.hInstance, MAKEINTRESOURCE(IDI_CALC_SMALL)));
/* Sets the state of the option to group digits */
hMenu = GetSubMenu(GetMenu(hWnd), 1);
CheckMenuItem(hMenu, IDM_VIEW_GROUP, (calc.usesep ? MF_CHECKED : MF_UNCHECKED));
/* update text for decimal button */
SendDlgItemMessage(hWnd, IDC_BUTTON_DOT, WM_SETTEXT, (WPARAM)0, (LPARAM)calc.sDecimal);
/* Fill combo box for conversion */
@@ -1312,18 +1350,36 @@ static INT_PTR CALLBACK DlgMainProc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp)
calc.action = IDM_VIEW_STANDARD;
DestroyWindow(hWnd);
save_config();
CheckMenuRadioItem(GetMenu(hWnd),
IDM_VIEW_STANDARD,
IDM_VIEW_CONVERSION,
IDM_VIEW_STANDARD,
MF_BYCOMMAND);
return TRUE;
case IDM_VIEW_SCIENTIFIC:
calc.layout = CALC_LAYOUT_SCIENTIFIC;
calc.action = IDM_VIEW_SCIENTIFIC;
DestroyWindow(hWnd);
save_config();
CheckMenuRadioItem(GetMenu(hWnd),
IDM_VIEW_STANDARD,
IDM_VIEW_CONVERSION,
IDM_VIEW_SCIENTIFIC,
MF_BYCOMMAND);
return TRUE;
case IDM_VIEW_CONVERSION:
calc.layout = CALC_LAYOUT_CONVERSION;
calc.action = IDM_VIEW_CONVERSION;
DestroyWindow(hWnd);
save_config();
CheckMenuRadioItem(GetMenu(hWnd),
IDM_VIEW_STANDARD,
IDM_VIEW_CONVERSION,
IDM_VIEW_CONVERSION,
MF_BYCOMMAND);
return TRUE;
case IDM_VIEW_HEX:
case IDM_VIEW_DEC:
@@ -1715,8 +1771,7 @@ int WINAPI _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdL
/* ignore hwnd: dialogs are already visible! */
if (calc.layout == CALC_LAYOUT_SCIENTIFIC)
dwLayout = IDD_DIALOG_SCIENTIFIC;
else
if (calc.layout == CALC_LAYOUT_CONVERSION)
else if (calc.layout == CALC_LAYOUT_CONVERSION)
dwLayout = IDD_DIALOG_CONVERSION;
else
dwLayout = IDD_DIALOG_STANDARD;

View File

@@ -34,6 +34,9 @@ EnumFontNames(ENUMLOGFONTEXW *lpelfe,
HWND hwndCombo = (HWND)lParam;
LPWSTR pszName = lpelfe->elfLogFont.lfFaceName;
/* Skip rotated font */
if(pszName[0] == L'@') return 1;
/* make sure font doesn't already exist in our list */
if(SendMessageW(hwndCombo,
CB_FINDSTRINGEXACT,
@@ -321,7 +324,7 @@ CharMapDlgProc(HWND hDlg,
ChangeMapFont(hDlg);
// Configure Richedi control for sending notification changes.
// Configure Richedit control for sending notification changes.
evMask = SendDlgItemMessage(hDlg, IDC_TEXTBOX, EM_GETEVENTMASK, 0, 0);
evMask |= ENM_CHANGE;
SendDlgItemMessage(hDlg, IDC_TEXTBOX, EM_SETEVENTMASK, 0, (LPARAM)evMask);

View File

@@ -50,7 +50,7 @@ END
STRINGTABLE
BEGIN
IDS_LICENSE "ÖNEMLİ: Aşağıdaki metin, özgün metnin resmî olmayan çevirisidir. Çeviri metniyle özgün metin arasında ayrım olabilir. Özgün metin, çeviri metninin altındadır.\r\n\r\n***\r\n\r\nBu izlence özgür yazılımdır; bunu, Özgür Yazılım Vakfı'nın yayımladığı GNU Umûmî Kamu Ruhsatı'nın, 2. sürümünün ya da daha sonraki bir sürümünün (Orası size bağlı.) koşulları altında yeniden dağıtabilir veyâ değiştirebilirsiniz.\r\n\r\nBu izlence, kullanışlı olabileceği beklentisiyle dağıtılmıştır ancak bu izlencenin HİÇBİR GÜVENCESİ YOKTUR, SATILABİLİRLİĞİN ve BELİRLİ BİR AMACA UYGUNLUĞUN demek istenilen güvencesi bile. Daha çok bilgi için GNU Umûmî Kamu Ruhsatı'na bakınız.\r\n\r\nBu izlenceyle birlikte GNU Umûmî Kamu Ruhsatı'nın bir kopyasını almış olmalısınız, eğer yoksa Özgür Yazılım Vakfı AŞ'ye (51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 ABD) yazınız.\r\n\r\n***\r\n\r\nThis program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.\r\n\r\nThis program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.\r\n\r\nYou should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA."
IDS_LICENSE "ÖNEMLİ: Aşağıdaki metin, özgün metnin resmî olmayan çevirisidir. Çeviri metniyle özgün metin arasında ayrım olabilir. Özgün metin, çeviri metninin altındadır.\r\n\r\n***\r\n\r\nBu izlence özgür yazılımdır; bunu, Özgür Yazılım Vakfı'nın yayımladığı GNU Umûmî Kamu Ruhsatı'nın, 2. sürümünün ya da daha sonraki bir sürümünün (Orası size bağlı.) şartları altında yeniden dağıtabilir veyâ değiştirebilirsiniz.\r\n\r\nBu izlence, kullanışlı olabileceği beklentisiyle dağıtılmıştır ancak bu izlencenin HİÇBİR GÜVENCESİ YOKTUR, SATILABİLİRLİĞİN ve BELİRLİ BİR AMACA UYGUNLUĞUN demek istenilen güvencesi bile. Daha çok bilgi için GNU Umûmî Kamu Ruhsatı'na bakınız.\r\n\r\nBu izlenceyle birlikte GNU Umûmî Kamu Ruhsatı'nın bir kopyasını almış olmalısınız, eğer yoksa Özgür Yazılım Vakfı AŞ'ye (51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 ABD) yazınız.\r\n\r\n***\r\n\r\nThis program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.\r\n\r\nThis program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.\r\n\r\nYou should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA."
IDS_ABOUT "&Üzerine..."
IDS_TITLE "Damga Eşlemi"
END

View File

@@ -35,7 +35,7 @@ SetLrgFont(PMAP infoPtr)
{
SendMessageW(hCombo,
WM_GETTEXT,
31,
Len + 1,
(LPARAM)lpFontName);
ZeroMemory(&lf,

View File

@@ -14,6 +14,8 @@
static const WCHAR szMapWndClass[] = L"FontMapWnd";
static const WCHAR szLrgCellWndClass[] = L"LrgCellWnd";
#define MAX_ROWS (0xFFFF / XCELLS) + 1 - YCELLS
static
VOID
TagFontToCell(PCELL pCell,
@@ -377,7 +379,7 @@ OnCreate(PMAP infoPtr,
SetGrid(infoPtr);
SetScrollRange(hwnd, SB_VERT, 0, 255, FALSE);
SetScrollRange(hwnd, SB_VERT, 0, MAX_ROWS, FALSE);
SetScrollPos(hwnd, SB_VERT, 0, TRUE);
Ret = TRUE;
@@ -423,7 +425,7 @@ OnVScroll(PMAP infoPtr,
}
infoPtr->iYStart = max(0,
min(infoPtr->iYStart, 255*16));
min(infoPtr->iYStart, MAX_ROWS));
iYDiff = iOldYStart - infoPtr->iYStart;
if (iYDiff)

View File

@@ -11,6 +11,8 @@ add_subdirectory(more)
add_subdirectory(reg)
add_subdirectory(sort)
add_subdirectory(taskkill)
add_subdirectory(tree)
add_subdirectory(whoami)
add_subdirectory(wmic)
add_subdirectory(wscript)
add_subdirectory(xcopy)

View File

@@ -27,155 +27,229 @@
*
*/
#include <windows.h>
#include <tchar.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <assert.h>
#define STRBUF 1024
/* getline: read a line, return length */
INT GetLine(char *line, FILE *in)
INT GetBuff(char *buff, FILE *in)
{
if (fgets(line, STRBUF, in) == NULL)
return 0;
else
return strlen(line);
return fread(buff, 1, STRBUF, in);
}
/* print program usage */
INT FileSize(FILE * fd)
{
INT result = -1;
if (fseek(fd, 0, SEEK_END) == 0 && (result = ftell(fd)) != -1)
{
/* Restoring file pointer */
rewind(fd);
}
return result;
}
/* Print program usage */
VOID Usage(VOID)
{
_tprintf(_T("\nCompares the contents of two files or sets of files.\n\n"
"COMP [data1] [data2]\n\n"
"COMP [/L] [/A] [data1] [data2]\n\n"
" data1 Specifies location and name of first file to compare.\n"
" data2 Specifies location and name of second file to compare.\n"));
" data2 Specifies location and name of second file to compare.\n"
" /A Display differences in ASCII characters.\n"
" /L Display line numbers for differences.\n"));
}
int _tmain (int argc, TCHAR *argv[])
{
INT i;
FILE *fp1, *fp2; // file pointers
PTCHAR Line1 = (TCHAR *)malloc(STRBUF * sizeof(TCHAR));
PTCHAR Line2 = (TCHAR *)malloc(STRBUF * sizeof(TCHAR));
TCHAR File1[_MAX_PATH], // file paths
File2[_MAX_PATH];
BOOL bMatch = TRUE, // files match
bAscii = FALSE, // /A switch
bLineNos = FALSE; // /L switch
/* parse command line for options */
/* File pointers */
FILE *fp1 = NULL;
FILE *fp2 = NULL;
INT BufLen1, BufLen2;
PTCHAR Buff1 = NULL;
PTCHAR Buff2 = NULL;
TCHAR File1[_MAX_PATH + 1], // File paths
File2[_MAX_PATH + 1];
BOOL bAscii = FALSE, // /A switch
bLineNos = FALSE; // /L switch
UINT LineNumber;
UINT Offset;
INT FileSizeFile1;
INT FileSizeFile2;
INT NumberOfOptions = 0;
INT FilesOK = 1;
INT Status = EXIT_SUCCESS;
/* Parse command line for options */
for (i = 1; i < argc; i++)
{
if (argv[i][0] == '/')
{
--argc;
switch (argv[i][1]) {
case 'A': bAscii = TRUE;
_tprintf(_T("/a not Supported\n")); (void)bAscii; /*FIXME: needs adding */
break;
case 'L': bLineNos = TRUE;
_tprintf(_T("/l not supported\n")); (void)bLineNos; /*FIXME: needs adding */
break;
case '?': Usage();
return EXIT_SUCCESS;
default:
_tprintf(_T("Invalid switch - /%c\n"), argv[i][1]);
Usage();
return EXIT_FAILURE;
switch (argv[i][1])
{
case 'A':
bAscii = TRUE;
NumberOfOptions++;
break;
case 'L':
bLineNos = TRUE;
NumberOfOptions++;
break;
case '?':
Usage();
return EXIT_SUCCESS;
default:
_tprintf(_T("Invalid switch - /%c\n"), argv[i][1]);
Usage();
return EXIT_FAILURE;
}
}
}
switch (argc)
if (argc - NumberOfOptions == 3)
{
case 1 :
_tprintf(_T("Name of first file to compare: "));
fgets(File1, _MAX_PATH, stdin);
for (i=0; i<_MAX_PATH; i++)
{
if (File1[i] == '\n')
{
File1[i] = '\0';
break;
}
}
_tprintf(_T("Name of second file to compare: "));
fgets(File2, _MAX_PATH, stdin);
for (i=0; i<_MAX_PATH; i++)
{
if (File2[i] == '\n')
{
File2[i] = '\0';
break;
}
}
break;
case 2 :
_tcsncpy(File1, argv[1], _MAX_PATH);
_tprintf(_T("Name of second file to compare: "));
fgets(File2, _MAX_PATH, stdin);
for (i=0; i<_MAX_PATH; i++)
{
if (File2[i] == '\n')
{
File2[i] = '\0';
break;
}
}
break;
case 3 :
_tcsncpy(File1, argv[1], _MAX_PATH);
_tcsncpy(File2, argv[2], _MAX_PATH);
break;
default :
_tprintf(_T("Bad command line syntax\n"));
return EXIT_FAILURE;
break;
_tcsncpy(File1, argv[1 + NumberOfOptions], _MAX_PATH);
_tcsncpy(File2, argv[2 + NumberOfOptions], _MAX_PATH);
}
else
{
_tprintf(_T("Bad command line syntax\n"));
return EXIT_FAILURE;
}
Buff1 = (TCHAR *)malloc(STRBUF * sizeof(TCHAR));
if (Buff1 == NULL)
{
_tprintf(_T("Can't get free memory for Buff1\n"));
return EXIT_FAILURE;
}
Buff2 = (TCHAR *)malloc(STRBUF * sizeof(TCHAR));
if (Buff2 == NULL)
{
_tprintf(_T("Can't get free memory for Buff2\n"));
Status = EXIT_FAILURE;
goto Cleanup;
}
if ((fp1 = fopen(File1, "r")) == NULL)
if ((fp1 = fopen(File1, "rb")) == NULL)
{
_tprintf(_T("Can't find/open file: %s\n"), File1);
return EXIT_FAILURE;
Status = EXIT_FAILURE;
goto Cleanup;
}
if ((fp2 = fopen(File2, "r")) == NULL)
if ((fp2 = fopen(File2, "rb")) == NULL)
{
_tprintf(_T("Can't find/open file: %s\n"), File2);
fclose(fp1);
return EXIT_FAILURE;
Status = EXIT_FAILURE;
goto Cleanup;
}
_tprintf(_T("Comparing %s and %s...\n"), File1, File2);
while ((GetLine(Line1, fp1) != 0) &&
(GetLine(Line2, fp2) != 0))
FileSizeFile1 = FileSize(fp1);
if (FileSizeFile1 == -1)
{
// LineCount++;
while ((*Line1 != '\0') && (*Line2 != '\0'))
{
if (*Line1 != *Line2)
{
bMatch = FALSE;
break;
}
Line1++, Line2++;
}
_tprintf(_T("Can't determine size of file: %s\n"), File1);
Status = EXIT_FAILURE;
goto Cleanup;
}
bMatch ? _tprintf(_T("Files compare OK\n")) : _tprintf(_T("Files are different sizes.\n"));
FileSizeFile2 = FileSize(fp2);
if (FileSizeFile2 == -1)
{
_tprintf(_T("Can't determine size of file: %s\n"), File2);
Status = EXIT_FAILURE;
goto Cleanup;
}
fclose(fp1);
fclose(fp2);
if (FileSizeFile1 != FileSizeFile2)
{
_tprintf(_T("Files are different sizes.\n"));
Status = EXIT_FAILURE;
goto Cleanup;
}
LineNumber = 1;
Offset = 0;
while (1)
{
BufLen1 = GetBuff(Buff1, fp1);
BufLen2 = GetBuff(Buff2, fp2);
return EXIT_SUCCESS;
if (ferror(fp1) || ferror(fp2))
{
_tprintf(_T("Files read error.\n"));
Status = EXIT_FAILURE;
goto Cleanup;
}
if (!BufLen1 && !BufLen2)
break;
assert(BufLen1 == BufLen2);
for (i = 0; i < BufLen1; i++)
{
if (Buff1[i] != Buff2[i])
{
FilesOK = 0;
/* Reporting here a mismatch */
if (bLineNos)
{
_tprintf(_T("Compare error at LINE %d\n"), LineNumber);
}
else
{
_tprintf(_T("Compare error at OFFSET %d\n"), Offset);
}
if (bAscii)
{
_tprintf(_T("file1 = %c\n"), Buff1[i]);
_tprintf(_T("file2 = %c\n"), Buff2[i]);
}
else
{
_tprintf(_T("file1 = %X\n"), Buff1[i]);
_tprintf(_T("file2 = %X\n"), Buff2[i]);
}
Offset++;
if (Buff1[i] == '\n')
LineNumber++;
}
}
}
if (FilesOK)
_tprintf(_T("Files compare OK\n"));
Cleanup:
if (fp1)
fclose(fp1);
if (fp2)
fclose(fp2);
if (Buff1)
free(Buff1);
if (Buff2)
free(Buff2);
return Status;
}
/* EOF */

View File

@@ -6,7 +6,7 @@
* 2011-10-17 diacritics change, other minor changes
*/
LANGUAGE LANG_ROMANIAN, SUBLANG_NEUTRAL
LANGUAGE LANG_ROMANIAN, SUBLANG_DEFAULT
STRINGTABLE
BEGIN

View File

@@ -1,4 +1,4 @@
/*
/*
* Russian language file by Andrey Korotaev (unC0Rr@inbox.ru) and Aleksey Bragin (aleksey@reactos.com)
* Copyright 2005
*/

View File

@@ -4,14 +4,14 @@ LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED
STRINGTABLE
BEGIN
IDS_NO_ENTRY "This command is not supported by the help utility.\nTry ""%s /?""\n."
IDS_NO_ENTRY "通过帮助实用程序不支持此命令。\n试 ""%s /?""\n"
END
STRINGTABLE
BEGIN
IDS_USAGE "Provides Help information for ReactOS commands.\n\n\
IDS_USAGE "提供ReactOS命令的帮助信息。\n\n\
HELP [command]\n\n\
command - Display help information for this command.\n"
command - 显示此命令的帮助信息。\n"
IDS_HELP1 "列出所有可用命令 (+ 它们的描述)\n\n\
help 命令\n\
命令 /? 得到特定命令的更多信息\n\n\

View File

@@ -2,7 +2,7 @@ LANGUAGE LANG_POLISH, SUBLANG_DEFAULT
STRINGTABLE
BEGIN
IDS_USAGE "Wy<EFBFBD>wietla obecn<EFBFBD> nazw<EFBFBD> komputera.\n\nhostname"
IDS_USAGE "Wyświetla obecną nazwę komputera.\n\nhostname"
IDS_NOSET "Opcja hostname -s nie jest wspierana."
IDS_ERROR "B<EFBFBD><EFBFBD>d Win32"
IDS_ERROR "Błąd Win32"
END

View File

@@ -0,0 +1,6 @@
add_executable(tree tree.c tree.rc)
set_module_type(tree win32cui UNICODE)
set_target_properties(tree PROPERTIES SUFFIX ".com")
add_importlibs(tree user32 msvcrt kernel32)
add_cd_file(TARGET tree DESTINATION reactos/system32 FOR all)

View File

@@ -0,0 +1,12 @@
LANGUAGE LANG_GERMAN, SUBLANG_NEUTRAL
STRINGTABLE
BEGIN
IDS_USAGE "Zeigt die Ordnerstruktur eines Laufwerks oder Pfads grafisch an.\n\n\
TREE [Laufwerk:][Pfad] [/F] [/A]\n\n\
\t/F Zeigt die Namen der Dateien in jedem Ordner an.\n\
\t/A Verwendet den ASCII- statt des erweiterten Zeichensatzes.\n"
IDS_NO_SUBDIRECTORIES "Es sind keine Unterordner vorhanden"
IDS_FOLDER_PATH "Auflistung der Ordnerpfade\n"
IDS_VOL_SERIAL "Volumeseriennummer : %x:%x\n"
END

View File

@@ -0,0 +1,12 @@
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
STRINGTABLE
BEGIN
IDS_USAGE "Visually displays the folder structure of a drive or path.\n\n\
TREE [drive:][path] [/F] [/A]\n\n\
\t/F Display the names of the files in each folder.\n\
\t/A Use ASCII instead of extended characters.\n"
IDS_NO_SUBDIRECTORIES "No subdirectories exist"
IDS_FOLDER_PATH "Folder PATH Listing\n"
IDS_VOL_SERIAL "Volume serial number is %x:%x\n"
END

View File

@@ -0,0 +1,12 @@
LANGUAGE LANG_FRENCH, SUBLANG_NEUTRAL
STRINGTABLE
BEGIN
IDS_USAGE "Affiche graphiquement la structure des dossiers d'un lecteur ou d'un chemin.\n\n\
TREE [lecteur:][chemin] [/F] [/A]\n\n\
\t/F Affiche le nom des fichiers dans chaque dossier.\n\
\t/A Utiliser l'ASCII au lieu de l'unicode.\n"
IDS_NO_SUBDIRECTORIES "Aucun sous-répertoire n'existe"
IDS_FOLDER_PATH "Énumération du dossier\n"
IDS_VOL_SERIAL "Le numéro de série du volume est %x:%x\n"
END

View File

@@ -0,0 +1,12 @@
LANGUAGE LANG_ROMANIAN, SUBLANG_DEFAULT
STRINGTABLE
BEGIN
IDS_USAGE "Afișează o structura de fișiere a unui director sau unități de stocare.\n\n\
TREE [unitate:][cale] [/F] [/A]\n\n\
\t/F Afișează numele fișierelor din fiecare director.\n\
\t/A Folosește ASCII în loc de caractere extinse.\n"
IDS_NO_SUBDIRECTORIES "Nu există subdirectoare"
IDS_FOLDER_PATH "Enumerarea directorului CALE\n"
IDS_VOL_SERIAL "Numărul de serie al volumului este %x:%x\n"
END

View File

@@ -0,0 +1,14 @@
/* Russian translation by Kudratov Olimjon (olim98@bk.ru) */
LANGUAGE LANG_RUSSIAN, SUBLANG_DEFAULT
STRINGTABLE
BEGIN
IDS_USAGE "Графическое представление структуры папок или пути.\n\n\
TREE [диск:][путь] [/F] [/A]\n\n\
\t/F Вывод имен файлов в каждой папке.\n\
\t/A Использовать символы ASCII вместо символов национальных алфавитов..\n"
IDS_NO_SUBDIRECTORIES "Подпапки отсутствуют"
IDS_FOLDER_PATH "Структура папок\n"
IDS_VOL_SERIAL "Серийный номер тома %x:%x\n"
END

View File

@@ -0,0 +1,6 @@
#pragma once
#define IDS_USAGE 0
#define IDS_NO_SUBDIRECTORIES 1
#define IDS_FOLDER_PATH 2
#define IDS_VOL_SERIAL 3

View File

@@ -0,0 +1,397 @@
/*
* PROJECT: ReactOS
* LICENSE: GNU GPLv2 only as published by the Free Software Foundation
* PURPOSE: Implements tree.com functionality similar to Windows
* PROGRAMMERS: Asif Bahrainwala (asif_bahrainwala@hotmail.com)
*/
#include <stdio.h>
#include <stdlib.h>
#include <windef.h>
#include <winbase.h>
#include <winuser.h>
#include "resource.h"
#define STR_MAX 2048
static void GetDirectoryStructure(wchar_t* strPath, UINT width, const wchar_t* prevLine);
/* if this flag is set to true, files will also be listed */
BOOL bShowFiles = FALSE;
/* if this flag is true, ASCII characters will be used instead of UNICODE ones */
BOOL bUseAscii = FALSE;
/*
* This takes strings from a resource string table
* and outputs it to the console.
*/
VOID PrintResourceString(INT resID, ...)
{
WCHAR tmpBuffer[STR_MAX];
CHAR tmpBufferA[STR_MAX];
va_list arg_ptr;
va_start(arg_ptr, resID);
LoadStringW(GetModuleHandle(NULL), resID, tmpBuffer, STR_MAX);
CharToOemW(tmpBuffer, tmpBufferA);
vfprintf(stdout, tmpBufferA, arg_ptr);
va_end(arg_ptr);
}
/**
* @name: HasSubFolder
*
* @param strPath
* Must specify folder name
*
* @return
* true if folder has sub folders, else will return false
*/
static BOOL HasSubFolder(const wchar_t *strPath1)
{
BOOL ret = FALSE;
WIN32_FIND_DATA FindFileData;
HANDLE hFind = NULL;
static wchar_t strPath[STR_MAX] = L"";
ZeroMemory(strPath, sizeof(strPath));
wcscat(strPath, strPath1);
wcscat(strPath, L"\\*.");
hFind = FindFirstFile(strPath, &FindFileData);
do
{
if (FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
{
if (wcscmp(FindFileData.cFileName, L".") == 0 ||
wcscmp(FindFileData.cFileName, L"..") == 0 )
{
continue;
}
ret = TRUE; //found subfolder
break;
}
}
while (FindNextFile(hFind, &FindFileData));
FindClose(hFind);
return ret;
}
/**
* @name: DrawTree
*
* @param strPath
* Must specify folder name
*
* @param arrFolder
* must be a list of folder names to be drawn in tree format
*
* @param width
* specifies drawing distance for correct formatting of tree structure being drawn on console screen
* used internally for adding spaces
*
* @param prevLine
* used internally for formatting reasons
*
* @return
* void
*/
static void DrawTree(const wchar_t* strPath,
const WIN32_FIND_DATA *arrFolder,
const size_t szArr,
UINT width,
const wchar_t *prevLine,
BOOL drawfolder)
{
BOOL bHasSubFolder = HasSubFolder(strPath);
UINT i = 0;
/* this will format the spaces required for correct formatting */
for (i = 0; i < szArr; ++i)
{
wchar_t *consoleOut = (wchar_t*)malloc(sizeof(wchar_t) * STR_MAX);
UINT j = 0;
static wchar_t str[STR_MAX];
/* As we do not seem to have the _s functions properly set up, use the non-secure version for now */
//wcscpy_s(consoleOut, STR_MAX, L"");
//wcscpy_s(str, STR_MAX, L"");
wcscpy(consoleOut, L"");
wcscpy(str, L"");
for (j = 0; j < width - 1; ++j)
{
/* if the previous line has '├' or '│' then the current line will
add '│' to continue the connecting line */
if ((BYTE)prevLine[j] == 195 || (BYTE)prevLine[j] == 179 ||
(BYTE)prevLine[j] == L'+' || (BYTE)prevLine[j] == L'|')
{
if (bUseAscii)
{
wchar_t a[] = {179, 0};
wcscat(consoleOut, a);
}
else
{
wcscat(consoleOut, L"|");
}
}
else
{
wcscat(consoleOut, L" ");
}
}
if (szArr - 1 != i)
{
if (drawfolder)
{
/* will add '├───Folder name */
if (bUseAscii)
wsprintf(str, L"+---%s", (wchar_t*)arrFolder[i].cFileName);
else
wsprintf(str, L"%c%c%c%c%s", 195, 196, 196, 196, (wchar_t*)arrFolder[i].cFileName);
}
else
{
if (bHasSubFolder)
{
/* will add '│ FileNamw' //thie line is added to connect
the belowfolder sub structure */
if (bUseAscii)
wsprintf(str,L"| %s", (wchar_t*)arrFolder[i].cFileName);
else
wsprintf(str,L"%c %s", 179, (wchar_t*)arrFolder[i].cFileName);
}
else
{
/* will add ' FileNamw' */
wsprintf(str,L" %s", (wchar_t*)arrFolder[i].cFileName);
}
}
}
else
{
if (drawfolder)
{
/* '└───Folder name' */
if (bUseAscii)
wsprintf(str, L"\\---%s", (wchar_t*)arrFolder[i].cFileName);
else
wsprintf(str, L"%c%c%c%c%s", 192, 196, 196, 196, (wchar_t*)arrFolder[i].cFileName);
}
else
{
if (bHasSubFolder)
{
/* '│ FileName' */
if (bUseAscii)
wsprintf(str, L"| %s", (wchar_t*)arrFolder[i].cFileName);
else
wsprintf(str, L"%c %s", 179, (wchar_t*)arrFolder[i].cFileName);
}
else
{
/* ' FileName' */
wsprintf(str, L" %s", (wchar_t*)arrFolder[i].cFileName);
}
}
}
wcscat(consoleOut, str);
wprintf(L"%s\n", consoleOut);
if (drawfolder)
{
wchar_t *str = (wchar_t*)malloc(STR_MAX * sizeof(wchar_t));
ZeroMemory(str, STR_MAX * sizeof(wchar_t));
wcscat(str, strPath);
wcscat(str, L"\\");
wcscat(str, arrFolder[i].cFileName);
GetDirectoryStructure(str, width + 4, consoleOut);
free(str);
}
free(consoleOut);
}
}
/**
* @name: GetDirectoryStructure
*
* @param strPath
* Must specify folder name
*
* @param width
* specifies drawing distance for correct formatting of tree structure being drawn on console screen
*
* @param prevLine
* specifies the previous line written on console, is used for correct formatting
* @return
* void
*/
static void
GetDirectoryStructure(wchar_t* strPath, UINT width, const wchar_t* prevLine)
{
WIN32_FIND_DATA FindFileData;
HANDLE hFind = NULL;
//DWORD err = 0;
/* will fill up with names of all sub folders */
WIN32_FIND_DATA *arrFolder = NULL;
UINT arrFoldersz = 0;
/* will fill up with names of all sub folders */
WIN32_FIND_DATA *arrFile = NULL;
UINT arrFilesz = 0;
ZeroMemory(&FindFileData, sizeof(FindFileData));
{
static wchar_t tmp[STR_MAX] = L"";
ZeroMemory(tmp, sizeof(tmp));
wcscat(tmp, strPath);
wcscat(tmp, L"\\*.*");
hFind = FindFirstFile(tmp, &FindFileData);
//err = GetLastError();
}
if (hFind == INVALID_HANDLE_VALUE)
return;
do
{
if (FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
{
if (wcscmp(FindFileData.cFileName, L".") == 0 ||
wcscmp(FindFileData.cFileName, L"..") == 0)
continue;
++arrFoldersz;
arrFolder = (WIN32_FIND_DATA*)realloc(arrFolder, arrFoldersz * sizeof(FindFileData));
if (arrFolder == NULL)
exit(-1);
arrFolder[arrFoldersz - 1] = FindFileData;
}
else
{
++arrFilesz;
arrFile = (WIN32_FIND_DATA*)realloc(arrFile, arrFilesz * sizeof(FindFileData));
if(arrFile == NULL)
exit(-1);
arrFile[arrFilesz - 1] = FindFileData;
}
}
while (FindNextFile(hFind, &FindFileData));
FindClose(hFind);
if (bShowFiles)
{
/* will free(arrFile) */
DrawTree(strPath, arrFile, arrFilesz, width, prevLine, FALSE);
}
/* will free(arrFile) */
DrawTree(strPath, arrFolder, arrFoldersz, width, prevLine, TRUE);
free(arrFolder);
free(arrFile);
}
/**
* @name: main
* standard main functionality as required by C/C++ for application startup
*
* @return
* error /success value
*/
int wmain( int argc, wchar_t *argv[])
{
DWORD dwSerial = 0;
wchar_t t = 0;
wchar_t *strPath = NULL;
DWORD sz = 0;
//wchar_t *context = NULL;
wchar_t *driveLetter = NULL;
int i;
/* parse the command line */
for (i = 1; i < argc; ++i)
{
if (argv[i][0] == L'-' || argv[i][0] == L'/')
{
switch (towlower(argv[i][1]))
{
case L'?':
/* will print help and exit after */
PrintResourceString(IDS_USAGE);
return 0;
case L'f':
/* if set to true, will populate all the files within the folder structure */
bShowFiles = TRUE;
break;
case L'a':
bUseAscii = TRUE;
break;
default:
break;
}
}
else
{
/* this must be path to some folder */
/* will set the current directory for this executable */
BOOL b = SetCurrentDirectoryW(argv[i]);
if (b == FALSE)
{
PrintResourceString(IDS_NO_SUBDIRECTORIES);
return 1;
}
}
}
PrintResourceString(IDS_FOLDER_PATH);
GetVolumeInformation(NULL, NULL, 0, &dwSerial, NULL, NULL, NULL, 0);
PrintResourceString(IDS_VOL_SERIAL, dwSerial >> 16, dwSerial & 0xffff);
/* get the buffer size */
sz = GetCurrentDirectory(1, &t);
/* must not return before calling delete[] */
strPath = (wchar_t*)malloc(sizeof(wchar_t) * sz);
/* get the current directory */
GetCurrentDirectory(sz, strPath);
/* get the drive letter , must not return before calling delete[] */
driveLetter = (wchar_t*)malloc(sizeof(wchar_t) * sz);
/* As we do not seem to have the _s functions properly set up, use the non-secure version for now */
//wcscpy_s(driveLetter,sz,strPath);
//wcstok_s(driveLetter,L":", &context); //parse for the drive letter
wcscpy(driveLetter, strPath);
wcstok(driveLetter, L":");
wprintf(L"%s:.\n", driveLetter);
free(driveLetter);
/* get the sub directories within this current folder */
GetDirectoryStructure(strPath, 1, L" ");
free(strPath);
wprintf(L"\n");
return 0;
}

View File

@@ -0,0 +1,28 @@
#include <windef.h>
#include "resource.h"
LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
#define REACTOS_STR_FILE_DESCRIPTION "ReactOS Tree Walk Utility"
#define REACTOS_STR_INTERNAL_NAME "tree"
#define REACTOS_STR_ORIGINAL_FILENAME "tree.com"
#include <reactos/version.rc>
/* UTF-8 */
#pragma code_page(65001)
#ifdef LANGUAGE_DE_DE
#include "lang/de-DE.rc"
#endif
#ifdef LANGUAGE_EN_US
#include "lang/en-US.rc"
#endif
#ifdef LANGUAGE_FR_FR
#include "lang/fr-FR.rc"
#endif
#ifdef LANGUAGE_RO_RO
#include "lang/ro-RO.rc"
#endif
#ifdef LANGUAGE_RU_RU
#include "lang/ru-RU.rc"
#endif

View File

@@ -0,0 +1,5 @@
add_executable(whoami whoami.c whoami.rc)
set_module_type(whoami win32cui UNICODE)
add_importlibs(whoami user32 secur32 advapi32 msvcrt kernel32)
add_cd_file(TARGET whoami DESTINATION reactos/system32 FOR all)

View File

@@ -0,0 +1,56 @@
LANGUAGE LANG_GERMAN, SUBLANG_NEUTRAL
STRINGTABLE
BEGIN
IDS_USER_HEADER "BENUTZERINFORMATIONEN"
IDS_GROU_HEADER "GRUPPENINFORMATIONEN"
IDS_PRIV_HEADER "BERECHTIGUNGSINFORMATIONEN"
IDS_COL_USER_NAME "Benutzername"
IDS_COL_GROUP_NAME "Gruppenname"
IDS_COL_TYPE "Typ"
IDS_COL_SID "SID"
IDS_COL_ATTRIB "Attribute"
IDS_COL_PRIV_NAME "Berechtigungsname"
IDS_COL_DESCRIPTION "Beschreibung"
IDS_COL_STATE "Status"
IDS_TP_WELL_KNOWN_GROUP "Bekannte Gruppe"
IDS_TP_ALIAS "Alias"
IDS_TP_LABEL "Bezeichnung"
/* [!] important note from the programmer: the program tries to remove
the last ', ' after concatenating, so keep than in mind when translating.
you can test your translation of these attributes by using 'whoami /groups' */
IDS_ATTR_GROUP_MANDATORY "Verbindliche Gruppe, "
IDS_ATTR_GROUP_ENABLED_BY_DEFAULT "Standardmäßig aktiviert, "
IDS_ATTR_GROUP_ENABLED "Aktivierte Gruppe, "
IDS_ATTR_GROUP_OWNER "Gruppenbesitzer, "
IDS_UNKNOWN_DESCRIPTION "???"
IDS_STATE_ENABLED "Aktiviert"
IDS_STATE_DISABLED "Deaktiviert"
IDS_ERROR_UPN "FEHLER: Der UPN (User Principal Name) konnte nicht abgerufen werden, da\nder aktuelle Benutzer kein Domänenbenutzer ist.\n"
IDS_ERROR_FQDN "FEHLER: Der FQDN (Fully Qualified Distinguished Name) konnte nicht\nabgerufen werden, da der aktuelle Benutzer kein Domänenbenutzer ist.\n"
IDS_ERROR_VALUEXPECTED "FEHLER: Ungültige Syntax. Wert für '/fo' erwartet.\nGeben Sie ""WHOAMI /?"" ein, um die Syntax anzuzeigen.\n"
IDS_ERROR_VALUENOTALLOWED "FEHLER: Das angegebene Format (/FO) ist ungültig.\nGeben Sie ""WHOAMI /?"" ein, um die Syntax anzuzeigen.\n"
IDS_ERROR_1TIMES "FEHLER: Ungültige Syntax. Option ""%s"" darf nicht mehr als '1' Mal verwendet werden.\nGeben Sie ""WHOAMI /?"" ein, um die Syntax anzuzeigen.\n"
IDS_ERROR_INVALIDSYNTAX "FEHLER: Ungültige Syntax.\nGeben Sie ""WHOAMI /?"" ein, um die Syntax anzuzeigen.\n"
IDS_ERROR_INVALIDARG "FEHLER: Argument/Option ungültig - '%s'.\nGeben Sie ""WHOAMI /?"" ein, um die Syntax anzuzeigen.\n"
IDS_ERROR_NH_LIST "FEHLER: Option /NH kann nicht mit Format LIST verwendet werden.\nGeben Sie ""WHOAMI /?"" ein, um die Syntax anzuzeigen.\n"
IDS_HELP "BESCHREIBUNG:\n\
Ermittelt Benutzername, Gruppen und Berechtigungen für den aktuellen Benutzer auf dem lokalen System.\n\
Ohne Parameterangabe werden die aktuelle Domäne und Benutzername angezeigt.\n\
\n\
Gültige Ausgabeformate für den '/fo' Parameter sind 'CSV', 'LIST' und 'TABLE'.\n\
'/nh' legt fest, dass der Spaltenheader nicht in der Ausgabe angezeigt wird. Standardmäßig werden diese in einer TABLE angezeigt.\n\
\n\
SYNTAX:\n\
whoami [/upn | /fqdn | /logonid] \n\
whoami {[/user] [/groups] [/priv]} [/fo <Format>] [/nh] \n\
whoami /all [/fo <Format>] [/nh] \n\
\n\
BEISPIELE: \n\
whoami /groups /priv /nh /fo csv \n\
whoami /logonid \n\
whoami \n"
END

View File

@@ -0,0 +1,56 @@
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
STRINGTABLE
BEGIN
IDS_USER_HEADER "USER INFORMATION"
IDS_GROU_HEADER "GROUP INFORMATION"
IDS_PRIV_HEADER "PRIVILEGES INFORMATION"
IDS_COL_USER_NAME "User Name"
IDS_COL_GROUP_NAME "Group Name"
IDS_COL_TYPE "Type"
IDS_COL_SID "SID"
IDS_COL_ATTRIB "Attributes"
IDS_COL_PRIV_NAME "Privilege Name"
IDS_COL_DESCRIPTION "Description"
IDS_COL_STATE "State"
IDS_TP_WELL_KNOWN_GROUP "Well-known group"
IDS_TP_ALIAS "Alias"
IDS_TP_LABEL "Label"
/* [!] important note from the programmer: the program tries to remove
the last ', ' after concatenating, so keep than in mind when translating.
you can test your translation of these attributes by using 'whoami /groups' */
IDS_ATTR_GROUP_MANDATORY "Mandatory group, "
IDS_ATTR_GROUP_ENABLED_BY_DEFAULT "Enabled by default, "
IDS_ATTR_GROUP_ENABLED "Enabled group, "
IDS_ATTR_GROUP_OWNER "Group owner, "
IDS_UNKNOWN_DESCRIPTION "???"
IDS_STATE_ENABLED "Enabled"
IDS_STATE_DISABLED "Disabled"
IDS_ERROR_UPN "ERROR: Unable to get User Principal Name (UPN) as the current logged-on user\nis not a domain user.\n"
IDS_ERROR_FQDN "ERROR: Unable to get Fully Qualified Distinguished Name (FQDN) as the current\nlogged-on user is not a domain user.\n"
IDS_ERROR_VALUEXPECTED "ERROR: Invalid syntax. Value expected for '/fo'.\nType ""WHOAMI /?"" for usage.\n"
IDS_ERROR_VALUENOTALLOWED "ERROR: Invalid syntax. '%s' value is not allowed for '/fo' option.\nType ""WHOAMI /?"" for usage.\n"
IDS_ERROR_1TIMES "ERROR: Invalid syntax. '%s' option is not allowed more than '1' time(s).\nType ""WHOAMI /?"" for usage.\n"
IDS_ERROR_INVALIDSYNTAX "ERROR: Invalid syntax.\nType ""WHOAMI /?"" for usage.\n"
IDS_ERROR_INVALIDARG "ERROR: Invalid argument/option - '%s'.\nType ""WHOAMI /?"" for usage.\n"
IDS_ERROR_NH_LIST "ERROR: /NH switch cannot be used with the LIST format.\nType ""WHOAMI /?"" for usage.\n"
IDS_HELP "DESCRIPTION:\n\
Display user, group and privileges information for the local logged-on user.\n\
If no arguments are provided, displays the current domain and user name.\n\
\n\
Available output formats for the '/fo' option are 'csv', 'list' and 'table'.\n\
Use '/nh' to hide headers. By default the data is displayed in a table.\n\
\n\
SYNTAX:\n\
whoami [/upn | /fqdn | /logonid] \n\
whoami {[/user] [/groups] [/priv]} [/fo <Format>] [/nh] \n\
whoami /all [/fo <Format>] [/nh] \n\
\n\
EXAMPLES: \n\
whoami /groups /priv /nh /fo csv \n\
whoami /logonid \n\
whoami \n"
END

View File

@@ -0,0 +1,58 @@
/* Spanish translation by Swyter */
LANGUAGE LANG_SPANISH, SUBLANG_NEUTRAL
STRINGTABLE
BEGIN
IDS_USER_HEADER "INFORMACIÓN DE USUARIO"
IDS_GROU_HEADER "INFORMACIÓN DE GRUPO"
IDS_PRIV_HEADER "INFORMACIÓN DE PRIVILEGIOS"
IDS_COL_USER_NAME "Nombre de usuario"
IDS_COL_GROUP_NAME "Nombre de grupo"
IDS_COL_TYPE "Tipo"
IDS_COL_SID "SID"
IDS_COL_ATTRIB "Atributos"
IDS_COL_PRIV_NAME "Nombre de privilegio"
IDS_COL_DESCRIPTION "Descripción"
IDS_COL_STATE "Estado"
IDS_TP_WELL_KNOWN_GROUP "Grupo conocido"
IDS_TP_ALIAS "Alias"
IDS_TP_LABEL "Etiqueta"
/* [!] important note from the programmer: the program tries to remove
the last ', ' after concatenating, so keep than in mind when translating.
you can test your translation of these attributes by using 'whoami /groups' */
IDS_ATTR_GROUP_MANDATORY "Grupo obligatorio, "
IDS_ATTR_GROUP_ENABLED_BY_DEFAULT "Habilitado de manera predeterminada, "
IDS_ATTR_GROUP_ENABLED "Grupo habilitado, "
IDS_ATTR_GROUP_OWNER "Propietario de grupo, "
IDS_UNKNOWN_DESCRIPTION "¿?"
IDS_STATE_ENABLED "Habilitada"
IDS_STATE_DISABLED "Deshabilitado"
IDS_ERROR_UPN "ERROR: no se puede obtener el nombre principal de usuario (UPN) porque el\nusuario que ha iniciado sesión no es un usuario de dominio.\n"
IDS_ERROR_FQDN "ERROR: no se puede obtener el nombre distintivo completo (FQDN) porque el usuario\nque ha iniciado sesión no es un usuario de dominio.\n"
IDS_ERROR_VALUEXPECTED "ERROR: Sintaxis no válida. Se esperaba un valor para ""/fo"".\nEscriba ""WHOAMI /?"" para su uso.\n"
IDS_ERROR_VALUENOTALLOWED "ERROR: Sintaxis no válida. El valor ""%s"" no está permitido para la opción ""/fo"".\nEscriba ""WHOAMI /?"" para su uso.\n"
IDS_ERROR_1TIMES "ERROR: Sintaxis no válida. La opción ""%s"" no está permitida más de ""1"" veces.\nEscriba ""WHOAMI /?"" para su uso.\n"
IDS_ERROR_INVALIDSYNTAX "ERROR: sintaxis no válida.\nEscriba ""WHOAMI /?"" para obtener detalles de uso.\n"
IDS_ERROR_INVALIDARG "ERROR: Argumento u opción no válido - ""%s"".\nEscriba ""WHOAMI /?"" para su uso.\n"
IDS_ERROR_NH_LIST "ERROR: no se puede usar el modificador /NH con el formato LIST.\nEscriba ""WHOAMI /?"" para obtener detalles de uso.\n"
IDS_HELP "DESCRIPCIÓN:\n\
Muestra información sobre el usuario local, sus privilegios y grupos.\n\
Si no se añaden argumentos se mostrará el usuario y dominio actual.\n\
\n\
Los formatos disponibles para '/fo' son 'csv', 'list' y 'table'.\n\
Por defecto los datos se muestran en una tabla (opción 'table').\n\
Puedes utilizar '/nh' para ocultar los encabezados. \n\
\n\
SINTAXIS:\n\
whoami [/upn | /fqdn | /logonid] \n\
whoami {[/user] [/groups] [/priv]} [/fo <Formato>] [/nh] \n\
whoami /all [/fo <Formato>] [/nh] \n\
\n\
EJEMPLOS: \n\
whoami /groups /priv /nh /fo csv \n\
whoami /logonid \n\
whoami \n"
END

View File

@@ -0,0 +1,56 @@
LANGUAGE LANG_FRENCH, SUBLANG_NEUTRAL
STRINGTABLE
BEGIN
IDS_USER_HEADER "INFORMATIONS UTILISATEUR"
IDS_GROU_HEADER "INFORMATIONS GROUPE"
IDS_PRIV_HEADER "INFORMATIONS PRIVILEGES"
IDS_COL_USER_NAME "Nom d'utilisateur"
IDS_COL_GROUP_NAME "Nom du groupe"
IDS_COL_TYPE "Type"
IDS_COL_SID "SID"
IDS_COL_ATTRIB "Attributs"
IDS_COL_PRIV_NAME "Nom du privilège"
IDS_COL_DESCRIPTION "Description"
IDS_COL_STATE "Statut"
IDS_TP_WELL_KNOWN_GROUP "Groupe connu"
IDS_TP_ALIAS "Alias"
IDS_TP_LABEL "Label"
/* [!] important note from the programmer: the program tries to remove
the last ', ' after concatenating, so keep than in mind when translating.
you can test your translation of these attributes by using 'whoami /groups' */
IDS_ATTR_GROUP_MANDATORY "Groupe obligatoire, "
IDS_ATTR_GROUP_ENABLED_BY_DEFAULT "Activé par défaut, "
IDS_ATTR_GROUP_ENABLED "Groupe activé, "
IDS_ATTR_GROUP_OWNER "Propriétaire du groupe, "
IDS_UNKNOWN_DESCRIPTION "???"
IDS_STATE_ENABLED "Activé"
IDS_STATE_DISABLED "Désactivé"
IDS_ERROR_UPN "Erreur : impossible de récupérer le nom d'utilisateur principal (UPN) étant donné que l'utilisateur actuel\nn'est pas un utilisateur du domaine.\n"
IDS_ERROR_FQDN "Errur : impossible de récupérer Fully Qualified Distinguished Name (FQDN) as the current\nlogged-on user is not a domain user.\n"
IDS_ERROR_VALUEXPECTED "Erreur : syntaxe incorrecte. Une valeur est attendue pour '/fo'.\nTapez ""WHOAMI /?"" pour l'aide.\n"
IDS_ERROR_VALUENOTALLOWED "Erreur : syntaxe incorrecte. La valeur '%s' n'est pas autorisée pour l'option '/fo'.\nTapez ""WHOAMI /?"" pour l'aide.\n"
IDS_ERROR_1TIMES "Erreur : syntaxe incorrecte. L'option '%s' n'est pas autorisée plus de '1' fois.\nTapez ""WHOAMI /?"" pour l'aide.\n"
IDS_ERROR_INVALIDSYNTAX "Erreur : syntaxe incorrecte.\nTapez ""WHOAMI /?"" pour l'aide.\n"
IDS_ERROR_INVALIDARG "Erreur : Argument/option non valide - '%s'.\nTapez ""WHOAMI /?"" pour l'aide.\n"
IDS_ERROR_NH_LIST "Erreur : l'argument /NH ne peut pas être utilisé avec le format LIST.\nTapez ""WHOAMI /?"" pour l'aide.\n"
IDS_HELP "DESCRIPTION:\n\
Affiche les informations sur l'utilisateur, les groupes et les privilèges pour l'utilisateur actuellement connecté.\n\
Si aucun argument n'est fourni, affiche le domaine et le nom d'utilisateur en cours d'usage.\n\
\n\
Les formats de sortie disponibles pour l'option '/fo' sont 'csv', 'list' et 'table'.\n\
Utilisez '/nh' pour cacher les entêtes. Par défaut, les données sont affichées dans un tableau.\n\
\n\
SYNTAX:\n\
whoami [/upn | /fqdn | /logonid] \n\
whoami {[/user] [/groups] [/priv]} [/fo <Format>] [/nh] \n\
whoami /all [/fo <Format>] [/nh] \n\
\n\
EXAMPLES: \n\
whoami /groups /priv /nh /fo csv \n\
whoami /logonid \n\
whoami \n"
END

View File

@@ -0,0 +1,57 @@
LANGUAGE LANG_ROMANIAN, SUBLANG_DEFAULT
STRINGTABLE
BEGIN
IDS_USER_HEADER "INFORMAȚII DE UTILIZATOR"
IDS_GROU_HEADER "INFORMAȚII DE GRUP"
IDS_PRIV_HEADER "INFORMAȚII DE PRIVILEGIU"
IDS_COL_USER_NAME "Nume utilizator"
IDS_COL_GROUP_NAME "Nume grup"
IDS_COL_TYPE "Tip"
IDS_COL_SID "SID"
IDS_COL_ATTRIB "Atribute"
IDS_COL_PRIV_NAME "Privilegiu"
IDS_COL_DESCRIPTION "Descriere"
IDS_COL_STATE "Stare"
IDS_TP_WELL_KNOWN_GROUP "Grup binecunoscut"
IDS_TP_ALIAS "Alias"
IDS_TP_LABEL "Etichetă"
/* [!] important note from the programmer: the program tries to remove
the last ', ' after concatenating, so keep than in mind when translating.
you can test your translation of these attributes by using 'whoami /groups' */
IDS_ATTR_GROUP_MANDATORY "Grup obligatoriu, "
IDS_ATTR_GROUP_ENABLED_BY_DEFAULT "Activat implicit, "
IDS_ATTR_GROUP_ENABLED "Grup activat, "
IDS_ATTR_GROUP_OWNER "Posesorul grupului, "
IDS_UNKNOWN_DESCRIPTION "???"
IDS_STATE_ENABLED "Activat"
IDS_STATE_DISABLED "Dezactivat"
IDS_ERROR_UPN "EROARE: Nu se poate obține Numele Principal al Utilizatorului (UPN) deoarece\n utilizatorul actualmente autentificat nu este un un utilizator de domeniu.\n"
IDS_ERROR_FQDN "EROARE: Nu se poate obține Numele Complet Distinctiv Calificat (FQDN) deoarece\nutilizatorul actualmente autentificat nu este un un utilizator de domeniu.\n"
IDS_ERROR_VALUEXPECTED "EROARE: Sintaxă eronată. Este așteptată o valoare pentru «/fo».\nTastați ""WHOAMI /?"" pentru informații de utilizare.\n"
IDS_ERROR_VALUENOTALLOWED "EROARE: Sintaxă eronată. Valoarea «%s» nu este permisă pentru opțiunea «/fo».\nTastați ""WHOAMI /?"" pentru informații de utilizare.\n"
IDS_ERROR_1TIMES "EROARE: Sintaxă eronată. Utilizarea opțiunii «%s» nu este permisă mai mult de o\nsingură dată.\nTastați ""WHOAMI /?"" pentru informații de utilizare.\n"
IDS_ERROR_INVALIDSYNTAX "EROARE: Sintaxă eronată.\nTastați ""WHOAMI /?"" pentru informații de utilizare.\n"
IDS_ERROR_INVALIDARG "EROARE: Argument/opțiune eronat(ă) - «%s».\nTastați ""WHOAMI /?"" pentru informații de utilizare.\n"
IDS_ERROR_NH_LIST "EROARE: Opțiunea /NH nu poate fi utilizată în formatul LIST.\nTastați ""WHOAMI /?"" pentru informații de utilizare.\n"
IDS_HELP "DESCRIERE:\n\
Afișează informațiile de utilizator, de grup, și de privilegii pentru un\n\
utilizator autentificat local. Dacă nu sunt furnizate argumente, se vor afișa\n\
numele și domeniul utilizatorului curent.\n\
\n\
Formatele disponibile pentru opțiunea «/fo» sunt «csv», «list», și «table».\n\
Argumentul «/nh» ascunde anteturile. Datele sunt implicit afișate tabelar.\n\
\n\
SINTAXĂ:\n\
whoami [/upn | /fqdn | /logonid] \n\
whoami {[/user] [/groups] [/priv]} [/fo <Format>] [/nh] \n\
whoami /all [/fo <Format>] [/nh] \n\
\n\
EXEMPLE: \n\
whoami /groups /priv /nh /fo csv \n\
whoami /logonid \n\
whoami \n"
END

View File

@@ -0,0 +1,58 @@
/* Russian language resource file by Kudratov Olimjon (olim98@bk.ru) */
LANGUAGE LANG_RUSSIAN, SUBLANG_DEFAULT
STRINGTABLE
BEGIN
IDS_USER_HEADER "Сведения о пользователе"
IDS_GROU_HEADER "Сведения о группах"
IDS_PRIV_HEADER "Сведения о привилегиях"
IDS_COL_USER_NAME "Пользователь"
IDS_COL_GROUP_NAME "Группа"
IDS_COL_TYPE "Тип"
IDS_COL_SID "SID"
IDS_COL_ATTRIB "Атрибуты"
IDS_COL_PRIV_NAME "Имя привилегии"
IDS_COL_DESCRIPTION "Описание"
IDS_COL_STATE "Состояние"
IDS_TP_WELL_KNOWN_GROUP "Хорошо известная группа"
IDS_TP_ALIAS "Псевдоним"
IDS_TP_LABEL "Метка"
/* [!] important note from the programmer: the program tries to remove
the last ', ' after concatenating, so keep than in mind when translating.
you can test your translation of these attributes by using 'whoami /groups' */
IDS_ATTR_GROUP_MANDATORY "Обязательная группа, "
IDS_ATTR_GROUP_ENABLED_BY_DEFAULT "Включена по умолчанию, "
IDS_ATTR_GROUP_ENABLED "Включенная группа, "
IDS_ATTR_GROUP_OWNER "Владелец группы, "
IDS_UNKNOWN_DESCRIPTION "???"
IDS_STATE_ENABLED "Включен"
IDS_STATE_DISABLED "Отключен"
IDS_ERROR_UPN "ОШИБКА: Не удается получить имя участника-пользователя (UPN), поскольку текущий\nвошедший пользователь не является пользователем домена.\n"
IDS_ERROR_FQDN "ОШИБКА: Не удается получить полное доменное имя (FQDN), поскольку текущий\nвошедший пользователь не является пользователем домена.\n"
IDS_ERROR_VALUEXPECTED "ОШИБКА: Указан недопустимый формат (/FO).\nВведите ""WHOAMI /?"" для получения справки по использованию.\n"
IDS_ERROR_VALUENOTALLOWED "ОШИБКА: Неверный синтаксис. Значение '%s' запрещено для параметра '/fo'.\nВведите ""WHOAMI /?"" для получения справки по использованию.\n"
IDS_ERROR_1TIMES "ОШИБКА: Неверный синтаксис. Запрещено использовать параметр '%s' более '1' раз(а).\nВведите ""WHOAMI /?"" для получения справки по использованию.\n"
IDS_ERROR_INVALIDSYNTAX "ОШИБКА: Синтаксическая ошибка. \nВведите ""WHOAMI /?"" для получения справки по использованию.\n"
IDS_ERROR_INVALIDARG "ОШИБКА: Неправильный параметр или аргумент - '%s'.\nВведите ""WHOAMI /?"" для получения справки по использованию.\n"
IDS_ERROR_NH_LIST "ОШИБКА: Параметр /NH нельзя использовать с форматом LIST.\nВведите ""WHOAMI /?"" для получения справки по использованию.\n"
IDS_HELP "Описание:\n\
Отображает информацию об пользователе, группе и привилегиях для локально вошедших пользователей.\n\
Если не указано аргументов, то отображает текущий домен и текущего пользователя (домен/пользователь).\n\
\n\
Доступные форматы для параметра '/fo' - 'csv', 'list' и 'table'.\n\
Используйте '/nh' чтобы скрыть заголовки. По умолчанию данные отображаются в таблице.\n\
\n\
Синтаксис:\n\
whoami [/upn | /fqdn | /logonid] \n\
whoami {[/user] [/groups] [/priv]} [/fo <формат>] [/nh] \n\
whoami /all [/fo <формат>] [/nh] \n\
\n\
Примеры:\n\
whoami /groups /priv /nh /fo csv \n\
whoami /logonid \n\
whoami \n"
END

View File

@@ -0,0 +1,39 @@
#pragma once
#define IDS_USER_HEADER 0
#define IDS_GROU_HEADER 1
#define IDS_PRIV_HEADER 2
#define IDS_COL_USER_NAME 3
#define IDS_COL_GROUP_NAME 4
#define IDS_COL_TYPE 5
#define IDS_COL_SID 6
#define IDS_COL_ATTRIB 7
#define IDS_COL_PRIV_NAME 8
#define IDS_COL_DESCRIPTION 9
#define IDS_COL_STATE 10
#define IDS_TP_WELL_KNOWN_GROUP 11
#define IDS_TP_ALIAS 12
#define IDS_TP_LABEL 13
#define IDS_ATTR_GROUP_MANDATORY 14
#define IDS_ATTR_GROUP_ENABLED_BY_DEFAULT 15
#define IDS_ATTR_GROUP_ENABLED 16
#define IDS_ATTR_GROUP_OWNER 17
#define IDS_UNKNOWN_DESCRIPTION 18
#define IDS_STATE_ENABLED 19
#define IDS_STATE_DISABLED 20
#define IDS_ERROR_UPN 21
#define IDS_ERROR_FQDN 22
#define IDS_ERROR_VALUEXPECTED 23
#define IDS_ERROR_VALUENOTALLOWED 24
#define IDS_ERROR_1TIMES 25
#define IDS_ERROR_INVALIDSYNTAX 26
#define IDS_ERROR_INVALIDARG 27
#define IDS_ERROR_NH_LIST 28
#define IDS_HELP 29

View File

@@ -0,0 +1,966 @@
/*
* PROJECT: ReactOS Whoami
* LICENSE: GPL - See COPYING in the top level directory
* FILE: base/applications/cmdutils/whoami/whoami.c
* PURPOSE: Displays information about the current local user, groups and privileges.
* PROGRAMMERS: Ismael Ferreras Morezuelas (swyterzone+ros@gmail.com)
*/
#define SECURITY_WIN32
#include <security.h>
#include <sddl.h>
#include <strsafe.h>
#include "resource.h"
/* Unicode (W) to ANSI OEM wrapper function, as console and Unicode don't mix well, sigh */
static void WhoamiOemConversion_printf(const WCHAR *lpSourceFormatW, ...)
{
CHAR *lpBufferA = NULL;
WCHAR *lpBufferW = NULL;
UINT Size;
va_list Args;
/* first let's find out the final output'ed length of the wprintf routine */
va_start(Args, lpSourceFormatW);
Size = _vscwprintf(lpSourceFormatW, Args);
va_end(Args);
/* allocate a proportional memory chunk taking into account the char width */
lpBufferW = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, (Size + 1) * sizeof(WCHAR));
if (!lpBufferW)
return;
/* do wprintf to this newly allocated buffer of ours */
va_start(Args, lpSourceFormatW);
_vsnwprintf(lpBufferW, Size, lpSourceFormatW, Args);
va_end(Args);
/* allocate a similarly sized buffer for the ANSI/OEM version of our string */
lpBufferA = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, (Size + 1) * sizeof(CHAR));
if (!lpBufferA)
{
HeapFree(GetProcessHeap(), 0, lpBufferW);
return;
}
/* convert our Unicode/Wide char string into a proper ANSI/OEM
string that our console may understand, at least in theory */
CharToOemBuffW(lpBufferW,
lpBufferA,
Size);
/* print the converted OEM string into the console's output and call it a day */
printf("%s", lpBufferA);
/* clean everything up */
HeapFree(GetProcessHeap(), 0, lpBufferW);
HeapFree(GetProcessHeap(), 0, lpBufferA);
}
#define wprintf WhoamiOemConversion_printf
BOOL NoHeader = FALSE;
UINT NoHeaderArgCount = 0;
UINT PrintFormatArgCount = 0;
enum
{
undefined,
table,
list,
csv
} PrintFormat = undefined;
BOOL GetArgument(WCHAR* arg, int argc, WCHAR* argv[])
{
int i;
if (!arg)
return FALSE;
for (i = 1; i < argc; i++)
{
if (wcsicmp(argv[i], arg) == 0)
return TRUE;
}
return FALSE;
}
/* blanking out the accepted modifiers will make filtering easier later on */
void BlankArgument(int argc, WCHAR* argv[])
{
argv[argc] = L"";
}
/* helper functions; let's keep it tidy to avoid redundancies */
LPWSTR WhoamiGetUser(EXTENDED_NAME_FORMAT NameFormat)
{
LPWSTR UsrBuf = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, MAX_PATH);
ULONG UsrSiz = MAX_PATH;
if (UsrBuf == NULL)
return NULL;
if (GetUserNameExW(NameFormat, UsrBuf, &UsrSiz))
{
CharLowerW(UsrBuf);
return UsrBuf;
}
HeapFree(GetProcessHeap(), 0, UsrBuf);
return NULL;
}
BOOL WhoamiFree(VOID* Buffer)
{
return HeapFree(GetProcessHeap(), 0, Buffer);
}
VOID* WhoamiGetTokenInfo(TOKEN_INFORMATION_CLASS TokenType)
{
HANDLE hToken = 0;
DWORD dwLength = 0;
VOID* pTokenInfo = 0;
if (OpenProcessToken(GetCurrentProcess(), TOKEN_READ, &hToken))
{
GetTokenInformation(hToken,
TokenType,
NULL,
dwLength,
&dwLength);
if (GetLastError() == ERROR_INSUFFICIENT_BUFFER)
{
pTokenInfo = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, dwLength);
if (pTokenInfo == NULL)
{
wprintf(L"ERROR: not enough memory to allocate the token structure.\r\n");
exit(1);
}
}
if (!GetTokenInformation(hToken, TokenType,
(LPVOID)pTokenInfo,
dwLength,
&dwLength))
{
wprintf(L"ERROR 0x%x: could not get token information.\r\n", GetLastError());
WhoamiFree(pTokenInfo);
exit(1);
}
CloseHandle(hToken);
}
return pTokenInfo;
}
LPWSTR WhoamiLoadRcString(INT ResId)
{
#define RC_STRING_MAX_SIZE 850
static WCHAR TmpBuffer[RC_STRING_MAX_SIZE];
LoadStringW(GetModuleHandleW(NULL), ResId, TmpBuffer, RC_STRING_MAX_SIZE);
return TmpBuffer;
}
void WhoamiPrintHeader(int HeaderId)
{
PWSTR Header = WhoamiLoadRcString(HeaderId);
DWORD Length = wcslen(Header);
if (NoHeader || PrintFormat == csv)
return;
wprintf(L"\n%s\n", Header);
while (Length--)
wprintf(L"-");
/* _putws seems to be broken in ReactOS' CRT ??? */
wprintf(L"\n\n");
}
typedef struct
{
UINT Rows;
UINT Cols;
LPWSTR Content[1];
} WhoamiTable;
/* create and prepare a new table for printing */
WhoamiTable *WhoamiAllocTable(UINT Rows, UINT Cols)
{
WhoamiTable *pTable = HeapAlloc(GetProcessHeap(),
HEAP_ZERO_MEMORY,
sizeof(WhoamiTable) + sizeof(LPWSTR) * Rows * Cols);
// wprintf(L"DEBUG: Allocating %dx%d elem table for printing.\r\n\r\n", Rows, Cols);
if (!pTable)
{
wprintf(L"ERROR: Not enough memory for displaying the table.");
exit(1);
}
pTable->Rows = Rows;
pTable->Cols = Cols;
return pTable;
}
/* allocate and fill a new entry in the table */
void WhoamiSetTable(WhoamiTable *pTable, WCHAR *Entry, UINT Row, UINT Col)
{
LPWSTR Target = HeapAlloc(GetProcessHeap(),
HEAP_ZERO_MEMORY,
1 + wcslen(Entry) * sizeof(Entry[0]));
// wprintf(L"DEBUG: Setting table value '%lp' '%ls' for %lu %lu.\n", entry, entry, row, col);
if (!Target)
exit(1);
wcscpy(Target, Entry);
pTable->Content[Row * pTable->Cols + Col] = Target;
}
/* fill a new entry in the table */
void WhoamiSetTableDyn(WhoamiTable *pTable, WCHAR *Entry, UINT Row, UINT Col)
{
pTable->Content[Row * pTable->Cols + Col] = Entry;
}
/* print and deallocate the table */
void WhoamiPrintTable(WhoamiTable *pTable)
{
UINT i, j;
UINT CurRow, CurCol;
UINT *ColLength;
if (!pTable)
{
wprintf(L"ERROR: The table passed for display is empty.");
exit(1);
}
/* if we are going to print a *list* or *table*; take note of the total
column size, as we will need it later on when printing them in a tabular
fashion, according to their windows counterparts */
if (PrintFormat != csv)
{
ColLength = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(UINT) * pTable->Cols);
if (PrintFormat == list)
{
for (j = 0; j < pTable->Cols; j++)
if (pTable->Content[j])
{
UINT ThisLength = wcslen(pTable->Content[j]);
/* now that we're here, seize the opportunity and add those pesky ":" */
pTable->Content[j][ThisLength++] = L':';
pTable->Content[j][ThisLength] = UNICODE_NULL;
ColLength[0] = max(ThisLength, ColLength[0]);
}
}
else
{
for (j = 0; j < pTable->Cols; j++)
for (i = 0; i < pTable->Rows; i++)
if (pTable->Content[i * pTable->Cols + j])
{
UINT ThisLength = wcslen(pTable->Content[i * pTable->Cols + j]);
ColLength[j] = max(ThisLength, ColLength[j]);
}
}
}
switch (PrintFormat)
{
case csv:
{
for (i = 0; i < pTable->Rows; i++)
{
if (!pTable->Content[i * pTable->Cols])
continue;
/* if the user especified /nh then skip the column labels */
if (NoHeader && i == 0)
continue;
for (j = 0; j < pTable->Cols; j++)
{
if (pTable->Content[i * pTable->Cols + j])
{
wprintf(L"\"%s\"%s",
pTable->Content[i * pTable->Cols + j],
(j+1 < pTable->Cols ? L"," : L""));
}
}
wprintf(L"\n");
}
break;
}
case list:
{
UINT FinalRow = 0;
/* fixme: we need to do two passes to find out which entry is the last one shown, or not null this is not exactly optimal */
for (CurRow = 1; CurRow < pTable->Rows; CurRow++)
{
/* if the first member of this row isn't available, then forget it */
if (!pTable->Content[CurRow * pTable->Cols])
continue;
FinalRow = CurRow;
}
for (CurRow = 1; CurRow < pTable->Rows; CurRow++)
{
/* if the first member of this row isn't available, then forget it */
if (!pTable->Content[CurRow * pTable->Cols])
continue;
/* if the user especified /nh then skip the column labels */
if (NoHeader && i == 0)
continue;
for (CurCol = 0; CurCol < pTable->Cols; CurCol++)
{
wprintf(L"%-*s %s\n",
ColLength[0],
pTable->Content[CurCol],
pTable->Content[CurRow * pTable->Cols + CurCol]);
}
/* don't add two carriage returns at the very end */
if (CurRow != FinalRow)
wprintf(L"\n");
}
break;
}
case table:
default:
{
for (i = 0; i < pTable->Rows; i++)
{
/* if the first member of this row isn't available, then forget it */
if (!pTable->Content[i * pTable->Cols])
continue;
/* if the user especified /nh then skip the column labels too */
if (NoHeader && i == 0)
continue;
for (j = 0; j < pTable->Cols; j++)
{
if (pTable->Content[i * pTable->Cols + j])
{
wprintf(L"%-*s ", ColLength[j], pTable->Content[i * pTable->Cols + j]);
}
}
wprintf(L"\n");
/* add the cute underline thingie for the table header */
if (i == 0)
{
for (j = 0; j < pTable->Cols; j++)
{
DWORD Length = ColLength[j];
while (Length--)
wprintf(L"=");
/* a spacing between all the columns except for the last one */
if (pTable->Cols != (i + 1))
wprintf(L" ");
}
wprintf(L"\n");
}
}
}
}
/* fixme: when many tables are displayed in a single run we
have to sandwich carriage returns in between. */
// if (!final_entry)
wprintf(L"\n");
for (i = 0; i < pTable->Rows; i++)
for (j = 0; j < pTable->Cols; j++)
WhoamiFree(pTable->Content[i * pTable->Cols + j]);
WhoamiFree(pTable);
}
int WhoamiLogonId(void)
{
PTOKEN_GROUPS pGroupInfo = (PTOKEN_GROUPS) WhoamiGetTokenInfo(TokenGroups);
DWORD dwIndex = 0;
LPWSTR pSidStr = 0;
PSID pSid = 0;
if (pGroupInfo == NULL)
return 0;
/* lets see if we can find the logon SID in that list, should be there */
for (dwIndex = 0; dwIndex < pGroupInfo->GroupCount; dwIndex++)
{
if ((pGroupInfo->Groups[dwIndex].Attributes & SE_GROUP_LOGON_ID) == SE_GROUP_LOGON_ID)
{
pSid = pGroupInfo->Groups[dwIndex].Sid;
}
}
if (pSid == 0)
{
WhoamiFree(pGroupInfo);
wprintf(L"ERROR: Couldn't find the logon SID.\n");
return 1;
}
if (!ConvertSidToStringSidW(pSid, &pSidStr))
{
WhoamiFree(pGroupInfo);
wprintf(L"ERROR: Couldn't convert the logon SID to a string.\n");
return 1;
}
else
{
/* let's show our converted logon SID */
wprintf(L"%s\n", pSidStr);
}
/* cleanup our allocations */
LocalFree(pSidStr);
WhoamiFree(pGroupInfo);
return 0;
}
int WhoamiUser(void)
{
PTOKEN_USER pUserInfo = (PTOKEN_USER) WhoamiGetTokenInfo(TokenUser);
LPWSTR pUserStr = NULL;
LPWSTR pSidStr = NULL;
WhoamiTable *UserTable = NULL;
if (pUserInfo == NULL)
{
return 1;
}
pUserStr = WhoamiGetUser(NameSamCompatible);
if (pUserStr == NULL)
{
WhoamiFree(pUserInfo);
return 1;
}
UserTable = WhoamiAllocTable(2, 2);
WhoamiPrintHeader(IDS_USER_HEADER);
/* set the column labels */
WhoamiSetTable(UserTable, WhoamiLoadRcString(IDS_COL_USER_NAME), 0, 0);
WhoamiSetTable(UserTable, WhoamiLoadRcString(IDS_COL_SID), 0, 1);
ConvertSidToStringSidW(pUserInfo->User.Sid, &pSidStr);
/* set the values for our single row of data */
WhoamiSetTable(UserTable, pUserStr, 1, 0);
WhoamiSetTable(UserTable, pSidStr, 1, 1);
WhoamiPrintTable(UserTable);
/* cleanup our allocations */
LocalFree(pSidStr);
WhoamiFree(pUserInfo);
WhoamiFree(pUserStr);
return 0;
}
int WhoamiGroups(void)
{
DWORD dwIndex = 0;
LPWSTR pSidStr = 0;
static WCHAR szGroupName[255] = {0};
static WCHAR szDomainName[255] = {0};
DWORD cchGroupName = _countof(szGroupName);
DWORD cchDomainName = _countof(szGroupName);
SID_NAME_USE Use = 0;
BYTE SidNameUseStr[12] =
{
/* SidTypeUser */ -1,
/* SidTypeGroup */ -1,
/* SidTypeDomain */ -1,
/* SidTypeUser */ -1,
/* SidTypeAlias */ IDS_TP_ALIAS,
/* SidTypeWellKnownGroup */ IDS_TP_WELL_KNOWN_GROUP,
/* SidTypeDeletedAccount */ -1,
/* SidTypeInvalid */ -1,
/* SidTypeUnknown */ -1,
/* SidTypeComputer */ -1,
/* SidTypeLabel */ IDS_TP_LABEL
};
PTOKEN_GROUPS pGroupInfo = (PTOKEN_GROUPS)WhoamiGetTokenInfo(TokenGroups);
UINT PrintingRow;
WhoamiTable *GroupTable = NULL;
if (pGroupInfo == NULL)
{
return 1;
}
/* the header is the first (0) row, so we start in the second one (1) */
PrintingRow = 1;
GroupTable = WhoamiAllocTable(pGroupInfo->GroupCount + 1, 4);
WhoamiPrintHeader(IDS_GROU_HEADER);
WhoamiSetTable(GroupTable, WhoamiLoadRcString(IDS_COL_GROUP_NAME), 0, 0);
WhoamiSetTable(GroupTable, WhoamiLoadRcString(IDS_COL_TYPE), 0, 1);
WhoamiSetTable(GroupTable, WhoamiLoadRcString(IDS_COL_SID), 0, 2);
WhoamiSetTable(GroupTable, WhoamiLoadRcString(IDS_COL_ATTRIB), 0, 3);
for (dwIndex = 0; dwIndex < pGroupInfo->GroupCount; dwIndex++)
{
LookupAccountSidW(NULL,
pGroupInfo->Groups[dwIndex].Sid,
(LPWSTR)&szGroupName,
&cchGroupName,
(LPWSTR)&szDomainName,
&cchDomainName,
&Use);
/* the original tool seems to limit the list to these kind of SID items */
if ((Use == SidTypeWellKnownGroup || Use == SidTypeAlias ||
Use == SidTypeLabel) && !(pGroupInfo->Groups[dwIndex].Attributes & SE_GROUP_LOGON_ID))
{
wchar_t tmpBuffer[666];
/* looks like windows treats 0x60 as 0x7 for some reason, let's just nod and call it a day:
0x60 is SE_GROUP_INTEGRITY | SE_GROUP_INTEGRITY_ENABLED
0x07 is SE_GROUP_MANDATORY | SE_GROUP_ENABLED_BY_DEFAULT | SE_GROUP_ENABLED */
if (pGroupInfo->Groups[dwIndex].Attributes == 0x60)
pGroupInfo->Groups[dwIndex].Attributes = 0x07;
/* 1- format it as DOMAIN\GROUP if the domain exists, or just GROUP if not */
_snwprintf((LPWSTR)&tmpBuffer,
_countof(tmpBuffer),
L"%s%s%s",
szDomainName,
cchDomainName ? L"\\" : L"",
szGroupName);
WhoamiSetTable(GroupTable, tmpBuffer, PrintingRow, 0);
/* 2- let's find out the group type by using a simple lookup table for lack of a better method */
WhoamiSetTable(GroupTable, WhoamiLoadRcString(SidNameUseStr[Use]), PrintingRow, 1);
/* 3- turn that SID into text-form */
ConvertSidToStringSidW(pGroupInfo->Groups[dwIndex].Sid, &pSidStr);
WhoamiSetTable(GroupTable, pSidStr, PrintingRow, 2);
LocalFree(pSidStr);
/* 4- reuse that buffer for appending the attributes in text-form at the very end */
ZeroMemory(tmpBuffer, sizeof(tmpBuffer));
if (pGroupInfo->Groups[dwIndex].Attributes & SE_GROUP_MANDATORY)
StringCchCat(tmpBuffer, _countof(tmpBuffer), WhoamiLoadRcString(IDS_ATTR_GROUP_MANDATORY));
if (pGroupInfo->Groups[dwIndex].Attributes & SE_GROUP_ENABLED_BY_DEFAULT)
StringCchCat(tmpBuffer, _countof(tmpBuffer), WhoamiLoadRcString(IDS_ATTR_GROUP_ENABLED_BY_DEFAULT));
if (pGroupInfo->Groups[dwIndex].Attributes & SE_GROUP_ENABLED)
StringCchCat(tmpBuffer, _countof(tmpBuffer), WhoamiLoadRcString(IDS_ATTR_GROUP_ENABLED));
if (pGroupInfo->Groups[dwIndex].Attributes & SE_GROUP_OWNER)
StringCchCat(tmpBuffer, _countof(tmpBuffer), WhoamiLoadRcString(IDS_ATTR_GROUP_OWNER));
/* remove the last comma (', ' which is 2 wchars) of the buffer, let's keep it simple */
tmpBuffer[max(wcslen(tmpBuffer) - 2, 0)] = UNICODE_NULL;
WhoamiSetTable(GroupTable, tmpBuffer, PrintingRow, 3);
PrintingRow++;
}
/* reset the buffers so that we can reuse them */
ZeroMemory(szGroupName, sizeof(szGroupName));
ZeroMemory(szDomainName, sizeof(szDomainName));
cchGroupName = 255;
cchDomainName = 255;
}
WhoamiPrintTable(GroupTable);
/* cleanup our allocations */
WhoamiFree((LPVOID)pGroupInfo);
return 0;
}
int WhoamiPriv(void)
{
PTOKEN_PRIVILEGES pPrivInfo = (PTOKEN_PRIVILEGES) WhoamiGetTokenInfo(TokenPrivileges);
DWORD dwResult = 0, dwIndex = 0;
WhoamiTable *PrivTable = NULL;
if (pPrivInfo == NULL)
{
return 1;
}
PrivTable = WhoamiAllocTable(pPrivInfo->PrivilegeCount + 1, 3);
WhoamiPrintHeader(IDS_PRIV_HEADER);
WhoamiSetTable(PrivTable, WhoamiLoadRcString(IDS_COL_PRIV_NAME), 0, 0);
WhoamiSetTable(PrivTable, WhoamiLoadRcString(IDS_COL_DESCRIPTION), 0, 1);
WhoamiSetTable(PrivTable, WhoamiLoadRcString(IDS_COL_STATE), 0, 2);
for (dwIndex = 0; dwIndex < pPrivInfo->PrivilegeCount; dwIndex++)
{
PWSTR PrivName = NULL, DispName = NULL;
DWORD PrivNameSize = 0, DispNameSize = 0;
BOOL ret = FALSE;
ret = LookupPrivilegeNameW(NULL,
&pPrivInfo->Privileges[dwIndex].Luid,
NULL,
&PrivNameSize);
PrivName = HeapAlloc(GetProcessHeap(), 0, ++PrivNameSize*sizeof(WCHAR));
LookupPrivilegeNameW(NULL,
&pPrivInfo->Privileges[dwIndex].Luid,
PrivName,
&PrivNameSize);
WhoamiSetTableDyn(PrivTable, PrivName, dwIndex + 1, 0);
/* try to grab the size of the string, also, beware, as this call is
unimplemented in ReactOS/Wine at the moment */
LookupPrivilegeDisplayNameW(NULL, PrivName, NULL, &DispNameSize, &dwResult);
DispName = HeapAlloc(GetProcessHeap(), 0, ++DispNameSize * sizeof(WCHAR));
ret = LookupPrivilegeDisplayNameW(NULL, PrivName, DispName, &DispNameSize, &dwResult);
if (ret && DispName)
{
// wprintf(L"DispName: %d %x '%s'\n", DispNameSize, GetLastError(), DispName);
WhoamiSetTableDyn(PrivTable, DispName, dwIndex + 1, 1);
}
else
{
WhoamiSetTable(PrivTable, WhoamiLoadRcString(IDS_UNKNOWN_DESCRIPTION), dwIndex + 1, 1);
if (DispName != NULL)
WhoamiFree(DispName);
}
if (pPrivInfo->Privileges[dwIndex].Attributes & SE_PRIVILEGE_ENABLED)
WhoamiSetTable(PrivTable, WhoamiLoadRcString(IDS_STATE_ENABLED), dwIndex + 1, 2);
else
WhoamiSetTable(PrivTable, WhoamiLoadRcString(IDS_STATE_DISABLED), dwIndex + 1, 2);
}
WhoamiPrintTable(PrivTable);
/* cleanup our allocations */
WhoamiFree(pPrivInfo);
return 0;
}
int wmain(int argc, WCHAR* argv[])
{
INT i;
BYTE WamBit = 0;
#define WAM_USER 1<<0
#define WAM_GROUPS 1<<1
#define WAM_PRIV 1<<2
/* * * * * * * * * * * * * * * *
* A: no parameters whatsoever */
if (argc == 1)
{
/* if there's no arguments just choose the simple path and display the user's identity in lowercase */
LPWSTR UserBuffer = WhoamiGetUser(NameSamCompatible);
if (UserBuffer)
{
wprintf(L"%s\n", UserBuffer);
WhoamiFree(UserBuffer);
return 0;
}
else
{
return 1;
}
}
/* first things first-- let's detect and manage both printing modifiers (/fo and /nh) */
for (i = 1; i < argc; i++)
{
if (wcsicmp(argv[i], L"/nh") == 0)
{
NoHeaderArgCount++;
if (NoHeader != TRUE)
{
NoHeader = TRUE;
// wprintf(L"Headers disabled!\n");
BlankArgument(i, argv);
}
}
}
for (i = 1; i < argc; i++)
{
if (wcsicmp(argv[i], L"/fo") == 0)
{
if ((i + 1) < argc)
{
// wprintf(L"exists another param after /fo\n");
PrintFormatArgCount++;
if (wcsicmp(argv[i + 1], L"table") == 0 && PrintFormat != table)
{
PrintFormat = table;
// wprintf(L"Changed to table format\n");
BlankArgument(i, argv);
BlankArgument(i + 1, argv);
}
else if (wcsicmp(argv[i + 1], L"list") == 0 && PrintFormat != list)
{
PrintFormat = list;
// wprintf(L"Changed to list format\n");
BlankArgument(i, argv);
BlankArgument(i + 1, argv);
/* looks like you can't use the "/fo list /nh" options together
for some stupid reason */
if (PrintFormat == list && NoHeader == TRUE)
{
wprintf(WhoamiLoadRcString(IDS_ERROR_NH_LIST));
return 1;
}
}
else if (wcsicmp(argv[i + 1], L"csv") == 0 && PrintFormat != csv)
{
PrintFormat = csv;
// wprintf(L"Changed to csv format\n");
BlankArgument(i, argv);
BlankArgument(i + 1, argv);
}
/* /nh or /fo after /fo isn't parsed as a value */
else if (wcsicmp(argv[i + 1], L"/nh") == 0 || wcsicmp(argv[i + 1], L"/fo") == 0
/* same goes for the other named options, not ideal, but works */
|| wcsicmp(argv[i + 1], L"/priv") == 0
|| wcsicmp(argv[i + 1], L"/groups") == 0
|| wcsicmp(argv[i + 1], L"/user") == 0
|| wcsicmp(argv[i + 1], L"/all") == 0
|| wcsicmp(argv[i + 1], L"") == 0)
{
goto FoValueExpected;
}
else
{
wprintf(WhoamiLoadRcString(IDS_ERROR_VALUENOTALLOWED), argv[i + 1]);
return 1;
}
}
else
{
FoValueExpected:
wprintf(WhoamiLoadRcString(IDS_ERROR_VALUEXPECTED));
return 1;
}
}
}
if (NoHeaderArgCount >= 2)
{
wprintf(WhoamiLoadRcString(IDS_ERROR_1TIMES), L"/nh");
return 1;
}
/* special case when there's just a /nh as argument; it outputs nothing */
else if (NoHeaderArgCount == 1 && argc == 2)
{
return 0;
}
if (PrintFormatArgCount >= 2)
{
wprintf(WhoamiLoadRcString(IDS_ERROR_1TIMES), L"/fo");
return 1;
}
/* if there's just /fo <format>... call it invalid */
else if (PrintFormatArgCount == 1 && argc == 3)
{
goto InvalidSyntax;
}
/* * * * * * * * * * * * * *
* B: one single parameter */
if (argc == 2)
{
/* now let's try to parse the triumvirate of simpler, single (1) arguments... plus help */
if (wcsicmp(argv[1], L"/?") == 0)
{
wprintf(WhoamiLoadRcString(IDS_HELP));
return 0;
}
else if (wcsicmp(argv[1], L"/upn") == 0)
{
LPWSTR UserBuffer = WhoamiGetUser(NameUserPrincipal);
if (UserBuffer)
{
wprintf(L"%s\n", UserBuffer);
WhoamiFree(UserBuffer);
return 0;
}
else
{
wprintf(WhoamiLoadRcString(IDS_ERROR_UPN));
return 1;
}
}
else if (wcsicmp(argv[1], L"/fqdn") == 0)
{
LPWSTR UserBuffer = WhoamiGetUser(NameFullyQualifiedDN);
if (UserBuffer)
{
wprintf(L"%s\n", UserBuffer);
WhoamiFree(UserBuffer);
return 0;
}
else
{
wprintf(WhoamiLoadRcString(IDS_ERROR_FQDN));
return 1;
}
}
else if (wcsicmp(argv[1], L"/logonid") == 0)
{
return WhoamiLogonId();
}
}
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* C: One main parameter with extra tasty modifiers to play with */
/* sometimes is just easier to whitelist for lack of a better method */
for (i=1; i<argc; i++)
{
if ((wcsicmp(argv[i], L"/user") != 0) &&
(wcsicmp(argv[i], L"/groups") != 0) &&
(wcsicmp(argv[i], L"/priv") != 0) &&
(wcsicmp(argv[i], L"/all") != 0) &&
(wcsicmp(argv[i], L"") != 0))
{
wprintf(WhoamiLoadRcString(IDS_ERROR_INVALIDARG), argv[i]);
return 1;
}
}
if (GetArgument(L"/user", argc, argv))
{
WamBit |= WAM_USER;
}
if (GetArgument(L"/groups", argc, argv))
{
WamBit |= WAM_GROUPS;
}
if (GetArgument(L"/priv", argc, argv))
{
WamBit |= WAM_PRIV;
}
if (GetArgument(L"/all", argc, argv))
{
/* one can't have it /all and any of the other options at the same time */
if ((WamBit & (WAM_USER | WAM_GROUPS | WAM_PRIV)) == 0)
{
WamBit |= (WAM_USER | WAM_GROUPS | WAM_PRIV);
}
else
{
goto InvalidSyntax;
}
}
if (WamBit & WAM_USER)
{
WhoamiUser();
}
if (WamBit & WAM_GROUPS)
{
WhoamiGroups();
}
if (WamBit & WAM_PRIV)
{
WhoamiPriv();
}
return 0;
InvalidSyntax:
wprintf(WhoamiLoadRcString(IDS_ERROR_INVALIDSYNTAX));
return 1;
}

View File

@@ -0,0 +1,33 @@
#include <windef.h>
#include "resource.h"
LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
#define REACTOS_STR_FILE_DESCRIPTION "whoami: display information about logged-on users"
#define REACTOS_STR_INTERNAL_NAME "whoami"
#define REACTOS_STR_ORIGINAL_FILENAME "whoami.exe"
#include <reactos/version.rc>
/* UTF-8 */
#pragma code_page(65001)
#ifdef LANGUAGE_DE_DE
#include "lang/de-DE.rc"
#endif
#ifdef LANGUAGE_EN_US
#include "lang/en-US.rc"
#endif
#ifdef LANGUAGE_ES_ES
#include "lang/es-ES.rc"
#endif
#ifdef LANGUAGE_FR_FR
#include "lang/fr-FR.rc"
#endif
#ifdef LANGUAGE_RO_RO
#include "lang/ro-RO.rc"
#endif
#ifdef LANGUAGE_RU_RU
#include "lang/ru-RU.rc"
#endif

View File

@@ -2,19 +2,19 @@ LANGUAGE LANG_DANISH, SUBLANG_DEFAULT
STRINGTABLE
{
STRING_INVPARMS, "Ugyldigt antal parametere; brug <EFBFBD>xcopy /?<EFBFBD> for hjelp\n"
STRING_INVPARM, "Ugyldigt parameter <EFBFBD>%1<EFBFBD>; brug <EFBFBD>xcopy /?<EFBFBD> for hjelp\n"
STRING_INVPARMS, "Ugyldigt antal parametere; brug «xcopy /?» for hjelp\n"
STRING_INVPARM, "Ugyldigt parameter «%1»; brug «xcopy /?» for hjelp\n"
STRING_PAUSE, "Tryk Enter for at begynde at kopiere\n"
STRING_SIMCOPY, "%1!d! fil(er) vil blive kopieret\n"
STRING_COPY, "%1!d! fil(er) kopieret\n"
STRING_QISDIR, "Er <EFBFBD>%1<EFBFBD> et filnavn eller katalog\n\
p<EFBFBD> destinationen?\n\
STRING_QISDIR, "Er «%1» et filnavn eller katalog\n\
på destinationen?\n\
(F - Fil, K - Katalog)\n"
STRING_SRCPROMPT, "%1? (Ja|Nei)\n"
STRING_OVERWRITE, "Overskrive <EFBFBD>%1<EFBFBD>? (Ja|Nei|Alle)\n"
STRING_COPYFAIL, "Kunne ikke kopiere <EFBFBD>%1<EFBFBD> til <EFBFBD>%2<EFBFBD>; fejlet med r/c %3!d!\n"
STRING_OPENFAIL, "Kunne ikke <EFBFBD>bne <EFBFBD>%1<EFBFBD>\n"
STRING_READFAIL, "Kunne ikke l<EFBFBD>se <EFBFBD>%1<EFBFBD>\n"
STRING_OVERWRITE, "Overskrive «%1»? (Ja|Nei|Alle)\n"
STRING_COPYFAIL, "Kunne ikke kopiere «%1» til «%2»; fejlet med r/c %3!d!\n"
STRING_OPENFAIL, "Kunne ikke åbne «%1»\n"
STRING_READFAIL, "Kunne ikke læse «%1»\n"
STRING_YES_CHAR, "J"
STRING_NO_CHAR, "N"
STRING_ALL_CHAR, "A"
@@ -22,10 +22,10 @@ STRINGTABLE
STRING_DIR_CHAR, "K"
STRING_HELP,
"XCOPY - Kopierer filer eller katalogtre til en m<EFBFBD>lplassering\n\
"XCOPY - Kopierer filer eller katalogtre til en målplassering\n\
\n\
Syntaks:\n\
XCOPY kilde [m<EFBFBD>l] [/I] [/S] [/Q] [/F] [/L] [/W] [/T] [/N] [/U]\n\
XCOPY kilde [mål] [/I] [/S] [/Q] [/F] [/L] [/W] [/T] [/N] [/U]\n\
\t [/R] [/H] [/C] [/P] [/A] [/M] [/E] [/D] [/Y] [/-Y]\n\
\n\
hvor:\n\
@@ -33,25 +33,25 @@ hvor:\n\
[/I] Antag at destinationen er et katalog hvis destinationen ikke\n\
\tfindes og 2 eller flere filer bliver kopieret\n\
[/S] Kopier kataloger og underkataloger\n\
[/E] Kopier kataloger og underkataloger, ogs<EFBFBD> tomme kataloger\n\
[/Q] V<EFBFBD>r stille : vis ikke filnavne under kopiering\n\
[/F] Fil hele kilde- og m<EFBFBD>lnavn under kopiering\n\
[/L] Simul<EFBFBD>r operationen; vis kun, g<EFBFBD>r intet\n\
[/W] Sp<EFBFBD>rg f<EFBFBD>r koperingen starter\n\
[/E] Kopier kataloger og underkataloger, også tomme kataloger\n\
[/Q] Vær stille : vis ikke filnavne under kopiering\n\
[/F] Fil hele kilde- og målnavn under kopiering\n\
[/L] Simulér operationen; vis kun, gør intet\n\
[/W] Spørg før koperingen starter\n\
[/T] Lav tom katalogstruktur; kopier ikke filer\n\
[/Y] Sp<EFBFBD>rg ikke om filer skal overskrives\n\
[/-Y] Sp<EFBFBD>rg f<EFBFBD>r om filer skal overskrives\n\
[/P] Sp<EFBFBD>rg om hver enkelt fil der skal kopieres\n\
[/Y] Spørg ikke om filer skal overskrives\n\
[/-Y] Spørg før om filer skal overskrives\n\
[/P] Spørg om hver enkelt fil der skal kopieres\n\
[/N] Kopier som korte filnavn (8.3 tegn)\n\
[/U] Kopier kun filer som allerede findes p<EFBFBD> destinationen\n\
[/U] Kopier kun filer som allerede findes på destinationen\n\
[/R] Overskriv filer som er skrivebeskyttet\n\
[/H] Kopier skjulte filer og systemfiler\n\
[/C] Forts<EFBFBD>t selv om det opst<EFBFBD>r fejl under kopieringen\n\
[/C] Fortsæt selv om det opstår fejl under kopieringen\n\
[/A] Kopier ikke filer som er markeret som arkiv\n\
[/M] Kopier kun filer som er markeret som akriv; fjerner denne markering\n\
[/D | /D:m-d-<EFBFBD>] Kopier kun nye filer eller dem som er <EFBFBD>ndret efter\n\
[/D | /D:m-d-å] Kopier kun nye filer eller dem som er ændret efter\n\
\t\tden opgivne dato.\n\
\t\tHvis ingen dato opgives kopieres kun de filer hvor\n\
\t\tdestinationen er <EFBFBD>ldre end kilden\n\n"
\t\tdestinationen er ældre end kilden\n\n"
}

View File

@@ -2,19 +2,19 @@ LANGUAGE LANG_NORWEGIAN, SUBLANG_NORWEGIAN_BOKMAL
STRINGTABLE
{
STRING_INVPARMS, "Ugyldig antall parametere; bruk <EFBFBD>xcopy /?<EFBFBD> for hjelp\n"
STRING_INVPARM, "Ugyldig parameter <EFBFBD>%1<EFBFBD>; bruk <EFBFBD>xcopy /?<EFBFBD> for hjelp\n"
STRING_PAUSE, "Trykk Enter for <EFBFBD> begynne <EFBFBD> kopiere\n"
STRING_INVPARMS, "Ugyldig antall parametere; bruk «xcopy /?» for hjelp\n"
STRING_INVPARM, "Ugyldig parameter «%1»; bruk «xcopy /?» for hjelp\n"
STRING_PAUSE, "Trykk Enter for å begynne å kopiere\n"
STRING_SIMCOPY, "%1!d! fil(er) ville blitt kopiert\n"
STRING_COPY, "%1!d! fil(er) kopiert\n"
STRING_QISDIR, "Eer <EFBFBD>%1<EFBFBD> et filnevn eller katalog\n\
i m<EFBFBD>let?\n\
STRING_QISDIR, "Eer «%1» et filnevn eller katalog\n\
i målet?\n\
(F - Fil, K - Katalog)\n"
STRING_SRCPROMPT,"%1? (Ja|Nei)\n"
STRING_OVERWRITE,"Skrive over <EFBFBD>%1<EFBFBD>? (Ja|Nei|Alle)\n"
STRING_COPYFAIL, "Klarte ikke kopiere <EFBFBD>%1<EFBFBD> til <EFBFBD>%2<EFBFBD>; feilet med r/c %3!d!\n"
STRING_OPENFAIL, "Klarte ikke <EFBFBD>pne <EFBFBD>%1<EFBFBD>\n"
STRING_READFAIL, "Klarte ikke lese <EFBFBD>%1<EFBFBD>\n"
STRING_OVERWRITE,"Skrive over «%1»? (Ja|Nei|Alle)\n"
STRING_COPYFAIL, "Klarte ikke kopiere «%1» til «%2»; feilet med r/c %3!d!\n"
STRING_OPENFAIL, "Klarte ikke åpne «%1»\n"
STRING_READFAIL, "Klarte ikke lese «%1»\n"
STRING_YES_CHAR, "J"
STRING_NO_CHAR, "N"
STRING_ALL_CHAR, "A"
@@ -22,36 +22,36 @@ STRINGTABLE
STRING_DIR_CHAR, "K"
STRING_HELP,
"XCOPY - Kopierer filer eller katalogtre til en m<EFBFBD>lplassering\n\
"XCOPY - Kopierer filer eller katalogtre til en målplassering\n\
\n\
Syntax:\n\
XCOPY kilde [m<EFBFBD>l] [/I] [/S] [/Q] [/F] [/L] [/W] [/T] [/N] [/U]\n\
XCOPY kilde [mål] [/I] [/S] [/Q] [/F] [/L] [/W] [/T] [/N] [/U]\n\
\t [/R] [/H] [/C] [/P] [/A] [/M] [/E] [/D] [/Y] [/-Y]\n\
\n\
Where:\n\
\n\
[/I] Anta at m<EFBFBD>let er en katalog hvis m<EFBFBD>let ikke finnes og 2 eller\n\
[/I] Anta at målet er en katalog hvis målet ikke finnes og 2 eller\n\
\tflere filer blir kopiert\n\
[/S] Kopier kataloger og underkataloger\n\
[/E] Kopier kataloger og underkataloger, ta med tomme kataloger\n\
[/Q] Stille modus: ikke vis filnavn under kopiering\n\
[/F] Fil hele kilde- og m<EFBFBD>lnavn under kopiering\n\
[/F] Fil hele kilde- og målnavn under kopiering\n\
[/L] Simuler operasjonen; vis bare hva som ville blitt kopiert\n\
[/W] Sp<EFBFBD>r for koperingen starter\n\
[/W] Spør for koperingen starter\n\
[/T] Lag tom katalogstruktur; ikke kopier filer\n\
[/Y] Ikke sp<EFBFBD>r n<EFBFBD>r filer skal overskrives\n\
[/-Y] Sp<EFBFBD>r f<EFBFBD>r filer skal overskrives\n\
[/P] Sp<EFBFBD>r for hver kildefil som skal kopieres\n\
[/Y] Ikke spør når filer skal overskrives\n\
[/-Y] Spør før filer skal overskrives\n\
[/P] Spør for hver kildefil som skal kopieres\n\
[/N] Kopier som korte filnavn (8.3 tegn)\n\
[/U] Bare kopier filer som allerede finnes i m<EFBFBD>let\n\
[/U] Bare kopier filer som allerede finnes i målet\n\
[/R] Skriv over filer som er skrivebeskyttet\n\
[/H] Kopier skjulte filer og systemfiler\n\
[/C] Fortsett selv om det oppst<EFBFBD>r feil under kopieringen\n\
[/C] Fortsett selv om det oppstår feil under kopieringen\n\
[/A] Ikke kopier filer som er markert som arkiv\n\
[/M] Bare kopier filer som er markert som akriv; fjerner denne merkingen\n\
[/D | /D:m-d-<EFBFBD>] Kopier nye filer eller de som er endret etter\n\
[/D | /D:m-d-å] Kopier nye filer eller de som er endret etter\n\
\t\tden oppgitte datoen.\n\
\t\tHvis ingen dato oppgis kopieres bare de filene som er\n\
\t\teldre i m<EFBFBD>let enn i kilden\n\n"
\t\teldre i målet enn i kilden\n\n"
}

View File

@@ -2,19 +2,19 @@ LANGUAGE LANG_POLISH, SUBLANG_DEFAULT
STRINGTABLE
{
STRING_INVPARMS, "Niew<EFBFBD>a<EFBFBD>ciwa liczba parametr<EFBFBD>w - uruchom xcopy /? aby wy<EFBFBD>wietli<EFBFBD> pomoc\n"
STRING_INVPARM, "Nieznany parameter '%1' - uruchom xcopy /? aby wy<EFBFBD>wietli<EFBFBD> pomoc\n"
STRING_PAUSE, "Naci<EFBFBD>nij <enter> aby rozpocz<EFBFBD><EFBFBD> kopiowanie\n"
STRING_SIMCOPY, "%1!d! plik(<EFBFBD>w) zosta<EFBFBD>oby skopiowanych\n"
STRING_COPY, "%1!d! plik(<EFBFBD>w) skopiowanych\n"
STRING_QISDIR, "Czy '%1' jest nazw<EFBFBD> pliku czy katalogu\n\
STRING_INVPARMS, "Niewłaściwa liczba parametrów - uruchom xcopy /? aby wyświetlić pomoc\n"
STRING_INVPARM, "Nieznany parameter '%1' - uruchom xcopy /? aby wyświetlić pomoc\n"
STRING_PAUSE, "Naciśnij <enter> aby rozpocząć kopiowanie\n"
STRING_SIMCOPY, "%1!d! plik(ów) zostałoby skopiowanych\n"
STRING_COPY, "%1!d! plik(ów) skopiowanych\n"
STRING_QISDIR, "Czy '%1' jest nazwą pliku czy katalogu\n\
docelowego?\n\
(P - plik, K - katalog)\n"
STRING_SRCPROMPT,"%1? (Tak|Nie)\n"
STRING_OVERWRITE,"Zast<EFBFBD>pi<EFBFBD> %1? (Tak|Nie|Wszystkie)\n"
STRING_COPYFAIL, "Kopiowanie '%1' do '%2' nie powiod<EFBFBD>o si<EFBFBD> - kod b<EFBFBD><EFBFBD>du %3!d!\n"
STRING_OPENFAIL, "Nie uda<EFBFBD>o si<EFBFBD> otworzy<EFBFBD> '%1'\n"
STRING_READFAIL, "B<EFBFBD><EFBFBD>d podczas czytania '%1'\n"
STRING_OVERWRITE,"Zastąpić %1? (Tak|Nie|Wszystkie)\n"
STRING_COPYFAIL, "Kopiowanie '%1' do '%2' nie powiodło się - kod błędu %3!d!\n"
STRING_OPENFAIL, "Nie udało się otworzyć '%1'\n"
STRING_READFAIL, "Błąd podczas czytania '%1'\n"
STRING_YES_CHAR, "T"
STRING_NO_CHAR, "N"
STRING_ALL_CHAR, "W"
@@ -22,35 +22,35 @@ STRINGTABLE
STRING_DIR_CHAR, "K"
STRING_HELP,
"XCOPY - kopiuje pliki lub drzewa katalog<EFBFBD>w\n\
"XCOPY - kopiuje pliki lub drzewa katalogów\n\
\n\
Sk<EFBFBD>adnia:\n\
XCOPY <EFBFBD>r<EFBFBD>d<EFBFBD>o [cel] [/I] [/S] [/Q] [/F] [/L] [/W] [/T] [/N] [/U]\n\
Składnia:\n\
XCOPY źródło [cel] [/I] [/S] [/Q] [/F] [/L] [/W] [/T] [/N] [/U]\n\
\t [/R] [/H] [/C] [/P] [/A] [/M] [/E] [/D] [/Y] [/-Y]\n\
\n\
Gdzie:\n\
\n\
[/I] Je<EFBFBD>eli ""cel"" nie istnieje i kopiowane s<EFBFBD> co najmniej dwa pliki,\n\
\tzak<EFBFBD>ada, <EFBFBD>e ""cel"" powien by<EFBFBD> katalogiem\n\
[/I] Jeżeli ""cel"" nie istnieje i kopiowane są co najmniej dwa pliki,\n\
\tzakłada, że ""cel"" powien być katalogiem\n\
[/S] Kopiuje katalogi i podkatalogi\n\
[/E] Kopiuje katalogi i podkatalogi, <EFBFBD><EFBFBD>cznie z pustymi\n\
[/Q] Nie wypisuje nazw plik<EFBFBD>w podczas kopiowania (tryb cichy)\n\
[/F] Wypisuje pe<EFBFBD>ne <EFBFBD>cie<EFBFBD>ki <EFBFBD>r<EFBFBD>d<EFBFBD>owe i docelowe podczas kopiowania\n\
[/L] Jedynie symuluje operacj<EFBFBD>, pokazuj<EFBFBD>c pliki, kt<EFBFBD>re by<EFBFBD>yby kopiowane\n\
[/W] Prosi o potwierdzenie przed rozpocz<EFBFBD>ciem kopiowania\n\
[/T] Tworzy puste katalogi, ale nie kopiuje plik<EFBFBD>w\n\
[/Y] Zast<EFBFBD>puje pliki bez pro<EFBFBD>by o potwierdzenie\n\
[/-Y] Zawsze prosi o potwierdzenie przed zast<EFBFBD>pieniem pliku\n\
[/P] Prosi o potwierdzenie przed skopiowaniem ka<EFBFBD>dego pliku\n\
[/N] Kopiuje u<EFBFBD>ywaj<EFBFBD>c kr<EFBFBD>tkich nazw plik<EFBFBD>w\n\
[/U] Kopiuje tylko pliki, kt<EFBFBD>re ju<EFBFBD> istniej<EFBFBD> w miejscu docelowym\n\
[/R] Zast<EFBFBD>puje pliki tylko do odczytu\n\
[/H] Kopiuje r<EFBFBD>wnie<EFBFBD> pliki ukryte i systemowe\n\
[/C] Kontynuuje nawet je<EFBFBD>eli podczas kopiowania wyst<EFBFBD>pi<EFBFBD>y b<EFBFBD><EFBFBD>dy\n\
[/E] Kopiuje katalogi i podkatalogi, łącznie z pustymi\n\
[/Q] Nie wypisuje nazw plików podczas kopiowania (tryb cichy)\n\
[/F] Wypisuje pełne ścieżki źródłowe i docelowe podczas kopiowania\n\
[/L] Jedynie symuluje operację, pokazując pliki, które byłyby kopiowane\n\
[/W] Prosi o potwierdzenie przed rozpoczęciem kopiowania\n\
[/T] Tworzy puste katalogi, ale nie kopiuje plików\n\
[/Y] Zastępuje pliki bez prośby o potwierdzenie\n\
[/-Y] Zawsze prosi o potwierdzenie przed zastąpieniem pliku\n\
[/P] Prosi o potwierdzenie przed skopiowaniem każdego pliku\n\
[/N] Kopiuje używając krótkich nazw plików\n\
[/U] Kopiuje tylko pliki, które już istnieją w miejscu docelowym\n\
[/R] Zastępuje pliki tylko do odczytu\n\
[/H] Kopiuje również pliki ukryte i systemowe\n\
[/C] Kontynuuje nawet jeżeli podczas kopiowania wystąpiły błędy\n\
[/A] Kopiuje tylko pliki z atrybutem archiwalny\n\
[/M] Kopiuje tylko pliki z atrybutem archiwalny i usuwa ten atrybut\n\
[/D | /D:m-d-y] Kopiuje tylko nowe pliki lub te zmodifikowane po podanej dacie.\n\
\t\tJe<EFBFBD>eli nie podano <EFBFBD>adnej daty, to kopiowane s<EFBFBD> pliki, kt<EFBFBD>re s<EFBFBD>\n\
\t\tnowsze ni<EFBFBD> w katalogu docelowym\n\n"
\t\tJeżeli nie podano żadnej daty, to kopiowane są pliki, które są\n\
\t\tnowsze niż w katalogu docelowym\n\n"
}

View File

@@ -25,28 +25,21 @@ LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
#define REACTOS_STR_ORIGINAL_FILENAME "xcopy.exe"
#include <reactos/version.rc>
/* UTF-8 */
#pragma code_page(65001)
#ifdef LANGUAGE_DA_DK
#include "lang/Da.rc"
#endif
#ifdef LANGUAGE_DE_DE
#include "lang/De.rc"
#endif
#ifdef LANGUAGE_EN_US
#include "lang/En.rc"
#endif
#ifdef LANGUAGE_NO_NO
#include "lang/No.rc"
#endif
#ifdef LANGUAGE_PL_PL
#include "lang/Pl.rc"
#endif
#ifdef LANGUAGE_ES_ES
#include "lang/Es.rc"
#endif
/* UTF-8 */
#pragma code_page(65001)
#ifdef LANGUAGE_DE_DE
#include "lang/De.rc"
#endif
#ifdef LANGUAGE_FR_FR
#include "lang/Fr.rc"
#endif
@@ -65,6 +58,12 @@ LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
#ifdef LANGUAGE_NL_NL
#include "lang/Nl.rc"
#endif
#ifdef LANGUAGE_NO_NO
#include "lang/No.rc"
#endif
#ifdef LANGUAGE_PL_PL
#include "lang/Pl.rc"
#endif
#ifdef LANGUAGE_PT_PT
#include "lang/Pt.rc"
#endif

View File

@@ -174,11 +174,11 @@ InitializeTabCtrl(HWND hwndDlg, PDXDIAG_CONTEXT pContext)
pContext->hTabCtrl = hTabCtrlWnd;
/* create the dialogs */
pContext->hDialogs[0] = CreateDialogParamW(hInst, MAKEINTRESOURCEW(IDD_SYSTEM_DIALOG), pContext->hMainDialog, SystemPageWndProc, (LPARAM)pContext); EnableDialogTheme(pContext->hDialogs[0]);
pContext->hDialogs[1] = CreateDialogParamW(hInst, MAKEINTRESOURCEW(IDD_MUSIC_DIALOG), pContext->hMainDialog, MusicPageWndProc, (LPARAM)pContext); EnableDialogTheme(pContext->hDialogs[1]);
pContext->hDialogs[2] = CreateDialogParamW(hInst, MAKEINTRESOURCEW(IDD_INPUT_DIALOG), pContext->hMainDialog, InputPageWndProc, (LPARAM)pContext); EnableDialogTheme(pContext->hDialogs[2]);
pContext->hDialogs[3] = CreateDialogParamW(hInst, MAKEINTRESOURCEW(IDD_NETWORK_DIALOG), pContext->hMainDialog, NetworkPageWndProc, (LPARAM)pContext); EnableDialogTheme(pContext->hDialogs[3]);
pContext->hDialogs[4] = CreateDialogParamW(hInst, MAKEINTRESOURCEW(IDD_HELP_DIALOG), pContext->hMainDialog, HelpPageWndProc, (LPARAM)pContext); EnableDialogTheme(pContext->hDialogs[4]);
pContext->hDialogs[0] = CreateDialogParamW(hInst, MAKEINTRESOURCEW(IDD_SYSTEM_DIALOG), pContext->hTabCtrl, SystemPageWndProc, (LPARAM)pContext); EnableDialogTheme(pContext->hDialogs[0]);
pContext->hDialogs[1] = CreateDialogParamW(hInst, MAKEINTRESOURCEW(IDD_MUSIC_DIALOG), pContext->hTabCtrl, MusicPageWndProc, (LPARAM)pContext); EnableDialogTheme(pContext->hDialogs[1]);
pContext->hDialogs[2] = CreateDialogParamW(hInst, MAKEINTRESOURCEW(IDD_INPUT_DIALOG), pContext->hTabCtrl, InputPageWndProc, (LPARAM)pContext); EnableDialogTheme(pContext->hDialogs[2]);
pContext->hDialogs[3] = CreateDialogParamW(hInst, MAKEINTRESOURCEW(IDD_NETWORK_DIALOG), pContext->hTabCtrl, NetworkPageWndProc, (LPARAM)pContext); EnableDialogTheme(pContext->hDialogs[3]);
pContext->hDialogs[4] = CreateDialogParamW(hInst, MAKEINTRESOURCEW(IDD_HELP_DIALOG), pContext->hTabCtrl, HelpPageWndProc, (LPARAM)pContext); EnableDialogTheme(pContext->hDialogs[4]);
/* insert tab ctrl items */
InsertTabCtrlItem(hTabCtrlWnd, 0, MAKEINTRESOURCEW(IDS_SYSTEM_DIALOG));
@@ -311,7 +311,7 @@ int APIENTRY wWinMain(HINSTANCE hInstance,
hInst = hInstance;
DialogBox(hInst, MAKEINTRESOURCE(IDD_MAIN_DIALOG), NULL, DxDiagWndProc);
DialogBox(hInst, MAKEINTRESOURCE(IDD_MAIN_DIALOG), NULL, DxDiagWndProc);
return 0;
}

View File

@@ -216,6 +216,6 @@ BEGIN
IDS_FORMAT_ADAPTER_MEM "%u Mo"
IDS_FORMAT_ADAPTER_MODE "%04u x %04u (%u bit)(%uHz)"
IDS_OPTION_NO "Non"
IDS_D3DTEST_DESCRIPTION "This will start Direct3D interface test. Continue?"
IDS_D3DTEST_D3Dx "This test will use hardware-accelerated Direct3D %u interface."
IDS_D3DTEST_DESCRIPTION "Ceci va démarrer le test de l'interface Direct3D. Continuer ?"
IDS_D3DTEST_D3Dx "Ce test va utiliser l'interface Direct3D %u accélérée matériellement."
END

View File

@@ -1,4 +1,4 @@
LANGUAGE LANG_ITALIAN, SUBLANG_DEFAULT
LANGUAGE LANG_ITALIAN, SUBLANG_DEFAULT
STRINGTABLE
BEGIN

View File

@@ -10,10 +10,10 @@ LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED
STRINGTABLE
BEGIN
IDS_INSTALL "Install"
IDS_INSTALL "安装"
IDS_PRINT "列印"
IDS_STRING "ReactOS 给所有人一个自由的操作系统1234567890"
IDS_OPEN "Open Font..."
IDS_OPEN "打开字体档案..."
IDS_ERROR "错误"
IDS_ERROR_NOMEM "没有足够的内存来完成操作。"
IDS_ERROR_NOFONT "1不是一个有效的字体档案。"

View File

@@ -1,11 +1,11 @@
/* TRANSLATORS: 2006 Fatih Aşıcı; 2013, 2014 Erdem Ersoy (eersoy93) (erdemersoy@live.com) */
/* TRANSLATORS: 2006 Fatih Aşıcı, 2013-2015 Erdem Ersoy (eersoy93) (erdemersoy@live.com) */
LANGUAGE LANG_TURKISH, SUBLANG_DEFAULT
STRINGTABLE
BEGIN
IDS_APPNAME "Mayın Tarlası"
IDS_NOBODY "Hiç Kimse"
IDS_NOBODY "Bir kişi bile"
IDS_ABOUT "Telif Hakkı: 2000 - Joshua Thielen"
END

View File

@@ -12,7 +12,7 @@ IDM_CONSOLE_SMALL MENU
BEGIN
POPUP "档案(&F)"
BEGIN
MENUITEM "New\tCtrl+N", IDM_FILE_NEW
MENUITEM "新建\tCtrl+N", IDM_FILE_NEW
MENUITEM SEPARATOR
MENUITEM "结束(&X)\tAlt+F4", IDM_FILE_EXIT
END
@@ -26,13 +26,13 @@ IDM_CONSOLE_LARGE MENU
BEGIN
POPUP "档案(&F)"
BEGIN
MENUITEM "New\tCtrl+N", IDM_FILE_NEW
MENUITEM "新建\tCtrl+N", IDM_FILE_NEW
MENUITEM SEPARATOR
MENUITEM "结束(&X)\tAlt+F4", IDM_FILE_EXIT
END
POPUP "&Windows"
POPUP "窗口(&W)"
BEGIN
MENUITEM "List", IDM_WINDOWS_LIST
MENUITEM "列表", IDM_WINDOWS_LIST
END
POPUP "帮助(&H)"
BEGIN

View File

@@ -11,22 +11,22 @@ BEGIN
MENUITEM SEPARATOR
MENUITEM "退出(&E)", IDM_EXIT
END
POPUP "&Play"
POPUP "播放(&P)"
BEGIN
MENUITEM "Play/&Pause\tCtrl+P", IDC_PLAY
MENUITEM "St&op\tCtrl+S", IDC_STOP
MENUITEM "播放/暂停(&P)\tCtrl+P", IDC_PLAY
MENUITEM "停止(&S)\tCtrl+S", IDC_STOP
MENUITEM SEPARATOR
MENUITEM "Repea&t\tCtrl+T", IDM_REPEAT
MENUITEM "重复(&R)\tCtrl+T", IDM_REPEAT
END
POPUP "&View"
POPUP "视图(&V)"
BEGIN
MENUITEM "Single-Window &Mode", IDM_SWITCHVIEW
MENUITEM "单窗模式(&M)", IDM_SWITCHVIEW
END
POPUP "&Device"
POPUP "设备(&D)"
BEGIN
MENUITEM "&Properties", IDM_DEVPROPS
MENUITEM "属性(&P)", IDM_DEVPROPS
MENUITEM SEPARATOR
MENUITEM "&Volume Control", IDM_VOLUMECTL
MENUITEM "音量控制(&V)", IDM_VOLUMECTL
END
POPUP "帮助(&H)"
BEGIN
@@ -55,6 +55,6 @@ BEGIN
IDS_TOOLTIP_FORWARD "向前跳过"
IDS_APPTITLE "ReactOS 多媒体播放器"
IDS_PLAY "播放"
IDS_DEFAULTMCIERRMSG "No description is available for this error."
IDS_UNKNOWNFILEEXT "Cannot determine the device type from the given filename extension."
IDS_DEFAULTMCIERRMSG "该错误没有可用的描述."
IDS_UNKNOWNFILEEXT "该设备类型从给定的文件扩展名无法断定."
END

View File

@@ -1,4 +1,4 @@
LANGUAGE LANG_BULGARIAN, SUBLANG_DEFAULT
LANGUAGE LANG_BULGARIAN, SUBLANG_DEFAULT
IDR_MAINMENU MENU
BEGIN

View File

@@ -1,4 +1,4 @@
LANGUAGE LANG_GERMAN, SUBLANG_NEUTRAL
LANGUAGE LANG_GERMAN, SUBLANG_NEUTRAL
IDR_MAINMENU MENU
BEGIN

View File

@@ -1,4 +1,4 @@
LANGUAGE LANG_GREEK, SUBLANG_DEFAULT
LANGUAGE LANG_GREEK, SUBLANG_DEFAULT
IDR_MAINMENU MENU
BEGIN

View File

@@ -1,6 +1,7 @@
/*
/*
* Spanish Language resource file
* Traducido por: Javier Remacha 2007-12-21
* Corregido por: Ismael Ferrera Morezuelas 2014-12-31
*/
LANGUAGE LANG_SPANISH, SUBLANG_NEUTRAL
@@ -26,7 +27,7 @@ BEGIN
MENUITEM "Recursos por tipo", IDC_RESBYTYPE, GRAYED
MENUITEM "Recursos por conexión", IDC_RESBYCONN, GRAYED
MENUITEM SEPARATOR
MENUITEM "Show hidden devices", IDC_SHOWHIDDEN
MENUITEM "Mostrar dispositivos ocultos", IDC_SHOWHIDDEN
END
POPUP "Ayuda"
BEGIN
@@ -46,11 +47,11 @@ BEGIN
END
IDD_ABOUTBOX DIALOGEX 22, 16, 190, 182
CAPTION "Acerca del Gestor de Dispositivos"
CAPTION "Acerca del Administrador de dispositivos"
FONT 8, "MS Shell Dlg", 0, 0
STYLE DS_SHELLFONT | WS_BORDER | WS_DLGFRAME | WS_SYSMENU | DS_MODALFRAME
BEGIN
LTEXT "Gestor de Dispositivos v0.1\nCopyright (C) 2006\nby Ged Murphy (gedmurphy@gmail.com)", IDC_STATIC, 48, 7, 130, 26
LTEXT "Administrador de dispositivos v0.1\nCopyright (C) 2006\nCreado por Ged Murphy (gedmurphy@gmail.com)", IDC_STATIC, 48, 7, 130, 26
PUSHBUTTON "Cerrar", IDOK, 75, 162, 44, 15
ICON IDI_MAIN_ICON, IDC_STATIC, 10, 10, 7, 30
EDITTEXT IDC_LICENSE_EDIT, 8, 44, 174, 107, WS_VISIBLE | WS_VSCROLL | WS_TABSTOP | ES_READONLY | ES_MULTILINE
@@ -58,7 +59,7 @@ END
STRINGTABLE
BEGIN
IDS_LICENSE "This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.\r\n\r\nThis program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.\r\n\r\nYou should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA."
IDS_LICENSE "Este programa es software libre; puedes redistribuirlo y/o modificarlo bajo los términos de la GNU General Public License tal y como fueron publicados por la Free Software Foundation; ya sea la versión 2 de la Licencia, o (bajo tu discreción) cualquier versión posterior.\r\n\r\nEste programa se distribuye con el fin de ser útil, pero viene SIN NINGUNA GARANTÍA; sin tan siquiera la garantía implícita de COMERCIALIZACIÓN o la de IDONEIDAD PARA UN PROPÓSITO CONCRETO. Para más información lee la GNU General Public License.\r\n\r\nDeberías de haber recibido una copia de la GNU General Public License con el programa; si no, puedes escribir a la Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 EE.UU."
END
STRINGTABLE
@@ -72,17 +73,17 @@ END
/* Hints */
STRINGTABLE
BEGIN
IDS_APPNAME "Gestor de Dispositivos de ReactOS"
IDS_APPNAME "Administrador de dispositivos de ReactOS"
IDS_HINT_BLANK " "
IDS_HINT_EXIT " Cerrar el programa."
IDS_HINT_EXIT " Cierra el programa."
IDS_HINT_REFRESH " Actualizar la lista de servicios."
IDS_HINT_PROP " Abre la pestaña de propiedades de la selección actual."
IDS_HINT_HELP " Mostrar la ventana de ayuda."
IDS_HINT_ABOUT " Acerca del Gestor de Dispositivos de ReactOS."
IDS_HINT_ABOUT " Acerca del Administrador de dispositivos de ReactOS."
IDS_HINT_SYS_RESTORE " Devuelve esta ventana al tamaño normal."
IDS_HINT_SYS_MOVE " Mueve esta ventana."
IDS_HINT_SYS_SIZE " Redimensiona esta ventana."
IDS_HINT_SYS_MINIMIZE " Colapsa esta ventana a un icono."
IDS_HINT_SYS_MAXIMIZE " Expande esta ventana hasta llenar esta pantalla."
IDS_HINT_SYS_CLOSE " Cerrar esta ventana."
IDS_HINT_SYS_MINIMIZE " Contrae esta ventana en un icono."
IDS_HINT_SYS_MAXIMIZE " Expande esta ventana hasta ocupar la pantalla."
IDS_HINT_SYS_CLOSE " Cierra esta ventana."
END

View File

@@ -1,4 +1,4 @@
LANGUAGE LANG_FRENCH, SUBLANG_NEUTRAL
LANGUAGE LANG_FRENCH, SUBLANG_NEUTRAL
IDR_MAINMENU MENU
BEGIN

View File

@@ -1,4 +1,4 @@
LANGUAGE LANG_ITALIAN, SUBLANG_NEUTRAL
LANGUAGE LANG_ITALIAN, SUBLANG_NEUTRAL
IDR_MAINMENU MENU
BEGIN

View File

@@ -1,4 +1,4 @@
/* Korean translation by manatails007(www.manatails007.org) */
/* Korean translation by manatails007(www.manatails007.org) */
LANGUAGE LANG_KOREAN, SUBLANG_DEFAULT

View File

@@ -1,4 +1,4 @@
LANGUAGE LANG_NORWEGIAN, SUBLANG_NEUTRAL
LANGUAGE LANG_NORWEGIAN, SUBLANG_NEUTRAL
IDR_MAINMENU MENU
BEGIN

View File

@@ -1,4 +1,4 @@
/*
/*
* Translated by xrogers
* xxrogers@users.sourceforge.net
* https://sourceforge.net/projects/reactospl

View File

@@ -1,4 +1,4 @@
/* 2011.10.19 - Fulea Ștefan: minor changes */
/* 2011.10.19 - Fulea Ștefan: minor changes */
LANGUAGE LANG_ROMANIAN, SUBLANG_NEUTRAL

View File

@@ -1,4 +1,4 @@
/* Russian language resource file (Dmitry Chapyshev, 2007-06-10) */
/* Russian language resource file (Dmitry Chapyshev, 2007-06-10) */
LANGUAGE LANG_RUSSIAN, SUBLANG_DEFAULT

View File

@@ -1,4 +1,4 @@
/* TRANSLATOR: Mário Kačmár /Mario Kacmar/ aka Kario (kario@szm.sk)
/* TRANSLATOR: Mário Kačmár /Mario Kacmar/ aka Kario (kario@szm.sk)
* DATE OF TR.: 14-02-2008
* LAST CHANGE: 29-08-2008
*/

View File

@@ -1,4 +1,4 @@
/*
/*
* PROJECT: ReactOS MSCUTILS
* FILE: base\applications\mscutils\devmgmt\lang\sv-SE.rc
* PURPOSE: Swedish resource file

View File

@@ -1,4 +1,4 @@
/*
/*
* PROJECT: ReactOS Device Management
* LICENSE: GPL - See COPYING in the top level directory
* FILE: base/applications/devmgmt/lang/th-TH.rc

View File

@@ -55,7 +55,7 @@ END
STRINGTABLE
BEGIN
IDS_LICENSE "ÖNEMLİ: Aşağıdaki metin, özgün metnin resmî olmayan çevirisidir. Çeviri metniyle özgün metin arasında ayrım olabilir. Özgün metin, çeviri metninin altındadır.\r\n\r\n***\r\n\r\nBu izlence özgür yazılımdır; bunu, Özgür Yazılım Vakfı'nın yayımladığı GNU Umûmî Kamu Ruhsatı'nın, 2. sürümünün ya da daha sonraki bir sürümünün (Orası size bağlı.) koşulları altında yeniden dağıtabilir veyâ değiştirebilirsiniz.\r\n\r\nBu izlence, kullanışlı olabileceği beklentisiyle dağıtılmıştır ancak bu izlencenin HİÇBİR GÜVENCESİ YOKTUR, SATILABİLİRLİĞİN ve BELİRLİ BİR AMACA UYGUNLUĞUN demek istenilen güvencesi bile. Daha çok bilgi için GNU Umûmî Kamu Ruhsatı'na bakınız.\r\n\r\nBu izlenceyle birlikte GNU Umûmî Kamu Ruhsatı'nın bir kopyasını almış olmalısınız, eğer yoksa Özgür Yazılım Vakfı AŞ'ye (51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 ABD) yazınız.\r\n\r\n***\r\n\r\nThis program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.\r\n\r\nThis program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.\r\n\r\nYou should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA."
IDS_LICENSE "ÖNEMLİ: Aşağıdaki metin, özgün metnin resmî olmayan çevirisidir. Çeviri metniyle özgün metin arasında ayrım olabilir. Özgün metin, çeviri metninin altındadır.\r\n\r\n***\r\n\r\nBu izlence özgür yazılımdır; bunu, Özgür Yazılım Vakfı'nın yayımladığı GNU Umûmî Kamu Ruhsatı'nın, 2. sürümünün ya da daha sonraki bir sürümünün (Orası size bağlı.) şartları altında yeniden dağıtabilir veyâ değiştirebilirsiniz.\r\n\r\nBu izlence, kullanışlı olabileceği beklentisiyle dağıtılmıştır ancak bu izlencenin HİÇBİR GÜVENCESİ YOKTUR, SATILABİLİRLİĞİN ve BELİRLİ BİR AMACA UYGUNLUĞUN demek istenilen güvencesi bile. Daha çok bilgi için GNU Umûmî Kamu Ruhsatı'na bakınız.\r\n\r\nBu izlenceyle birlikte GNU Umûmî Kamu Ruhsatı'nın bir kopyasını almış olmalısınız, eğer yoksa Özgür Yazılım Vakfı AŞ'ye (51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 ABD) yazınız.\r\n\r\n***\r\n\r\nThis program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.\r\n\r\nThis program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.\r\n\r\nYou should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA."
END
STRINGTABLE
@@ -73,13 +73,13 @@ BEGIN
IDS_HINT_BLANK " "
IDS_HINT_EXIT " İzlenceden çıkar."
IDS_HINT_REFRESH " Hizmet dizelgesini yeniler."
IDS_HINT_PROP " Seçilen için husûsiyetler penceresini açar."
IDS_HINT_HELP " Yardım penceresini açar."
IDS_HINT_PROP " Şimdiki seçilen için husûsiyet penceresini açar."
IDS_HINT_HELP " Yardım penceresini görüntüler."
IDS_HINT_ABOUT " Aygıt Yöneticisi üzerine."
IDS_HINT_SYS_RESTORE " Bu pencereyi eski boyutlarına döndürür."
IDS_HINT_SYS_RESTORE " Bu pencereyi düzgülük boyutlarına döndürür."
IDS_HINT_SYS_MOVE " Bu pencereyi devindirir."
IDS_HINT_SYS_SIZE " Bu pencerenin boyutlarını değiştirir."
IDS_HINT_SYS_MINIMIZE " Bu pencereyi simge durumuna küçültür."
IDS_HINT_SYS_SIZE " Bu pencereyi yeniden boyutlandırır."
IDS_HINT_SYS_MINIMIZE " Bu pencereyi bir simgeye küçültür."
IDS_HINT_SYS_MAXIMIZE " Bu pencereyi, bu görüntülüğü kaplatana dek genişletir."
IDS_HINT_SYS_CLOSE " Bu pencereyi kapatır."
END

View File

@@ -1,4 +1,4 @@
/*
/*
* PROJECT: ReactOS Device Management
* LICENSE: GPL - See COPYING in the top level directory
* FILE: base/applications/devmgmt/lang/uk-UA.rc

View File

@@ -1,4 +1,4 @@
/* Translated by Song Fuchang (0xfc) <sfc_0@yahoo.com.cn> */
/* Translated by Song Fuchang (0xfc) <sfc_0@yahoo.com.cn> */
LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED
@@ -23,7 +23,7 @@ BEGIN
MENUITEM "资源,按类型", IDC_RESBYTYPE, GRAYED
MENUITEM "资源,按连接", IDC_RESBYCONN, GRAYED
MENUITEM SEPARATOR
MENUITEM "Show hidden devices", IDC_SHOWHIDDEN
MENUITEM "显示隐藏的设备", IDC_SHOWHIDDEN
END
POPUP "帮助"
BEGIN

View File

@@ -1,50 +1,114 @@
#include "StdAfx.h"
/*
* PROJECT: ReactOS Device Manager
* LICENSE: GPL - See COPYING in the top level directory
* FILE: base/applications/mscutils/devmgmt/deviceview.cpp
* PURPOSE: Implements the tree view which holds the devices
* COPYRIGHT: Copyright 2014 Ged Murphy <gedmurphy@gmail.com>
*
*/
#include "stdafx.h"
#include "devmgmt.h"
#include "DeviceView.h"
CDeviceView::CDeviceView(HWND hMainWnd) :
/* DATA *********************************************/
#define DEVICE_NAME_LEN 256
#define CLASS_NAME_LEN 256
#define CLASS_DESC_LEN 256
INT_PTR
WINAPI
DevicePropertiesExW(
IN HWND hWndParent OPTIONAL,
IN LPCWSTR lpMachineName OPTIONAL,
IN LPCWSTR lpDeviceID OPTIONAL,
IN DWORD dwFlags OPTIONAL,
IN BOOL bShowDevMgr
);
typedef INT_PTR(WINAPI *pDevicePropertiesExW)(HWND,LPCWSTR,LPCWSTR,DWORD,BOOL);
/* PUBLIC METHODS *************************************/
CDeviceView::CDeviceView(
HWND hMainWnd,
ListDevices List
) :
m_Devices(NULL),
m_hMainWnd(hMainWnd),
m_hTreeView(NULL),
m_hPropertyDialog(NULL),
m_hShortcutMenu(NULL)
m_hShortcutMenu(NULL),
m_ListDevices(List),
m_ShowHidden(FALSE)
{
m_Devices = new CDevices();
}
CDeviceView::~CDeviceView(void)
{
delete m_Devices;
m_Devices = NULL;
}
BOOL
CDeviceView::Initialize()
{
BOOL bSuccess;
/* Initialize the devices class */
bSuccess = m_Devices->Initialize();
if (bSuccess == FALSE) return FALSE;
/* Create the main treeview */
m_hTreeView = CreateWindowExW(WS_EX_CLIENTEDGE,
WC_TREEVIEW,
NULL,
WS_CHILD | WS_VISIBLE | WS_BORDER | TVS_HASLINES |
TVS_HASBUTTONS | TVS_SHOWSELALWAYS | TVS_LINESATROOT,
0, 0, 0, 0,
m_hMainWnd,
(HMENU)IDC_TREEVIEW,
g_hInstance,
NULL);
WC_TREEVIEW,
NULL,
WS_CHILD | WS_VISIBLE | WS_BORDER | TVS_HASLINES |
TVS_HASBUTTONS | TVS_SHOWSELALWAYS | TVS_LINESATROOT,
0, 0, 0, 0,
m_hMainWnd,
(HMENU)IDC_TREEVIEW,
g_hInstance,
NULL);
if (m_hTreeView)
{
/* Get the devices image list */
m_ImageList = m_Devices->GetImageList();
/* Set the image list against the treeview */
(VOID)TreeView_SetImageList(m_hTreeView,
m_ImageList,
TVSIL_NORMAL);
/* Give the treeview arrows instead of +/- boxes (on Win7) */
SetWindowTheme(m_hTreeView, L"explorer", NULL);
}
return !!(m_hTreeView);
}
BOOL
CDeviceView::Uninitialize()
{
EmptyDeviceView();
(VOID)m_Devices->Uninitialize();
return TRUE;
}
VOID
CDeviceView::Size(INT x,
INT y,
INT cx,
INT cy)
CDeviceView::Size(
_In_ INT x,
_In_ INT y,
_In_ INT cx,
_In_ INT cy
)
{
/* Resize the treeview */
SetWindowPos(m_hTreeView,
@@ -56,23 +120,503 @@ CDeviceView::Size(INT x,
SWP_NOZORDER);
}
BOOL
CDeviceView::Uninitialize()
{
return TRUE;
}
VOID
CDeviceView::Refresh()
{
HANDLE hThread;
/* Run on a new thread to keep the gui responsive */
hThread = (HANDLE)_beginthreadex(NULL,
0,
&ListDevicesThread,
this,
0,
NULL);
if (hThread) CloseHandle(hThread);
}
VOID
CDeviceView::DisplayPropertySheet()
{
#ifndef __REACTOS__
pDevicePropertiesExW DevicePropertiesExW;
HMODULE hModule;
hModule = LoadLibraryW(L"devmgr.dll");
if (hModule == NULL) return;
DevicePropertiesExW = (pDevicePropertiesExW)GetProcAddress(hModule,
"DevicePropertiesExW");
if (DevicePropertiesExW == NULL)
{
FreeLibrary(hModule);
return;
}
#endif
TV_ITEM tvItem;
tvItem.hItem = TreeView_GetSelection(m_hTreeView);
tvItem.mask = TVIF_PARAM;
if (TreeView_GetItem(m_hTreeView, &tvItem) &&
(LPTSTR)tvItem.lParam != NULL)
{
DevicePropertiesExW(m_hTreeView,
NULL,
(LPTSTR)tvItem.lParam,
1,//DPF_EXTENDED,
FALSE);
}
#ifndef __REACTOS__
FreeLibrary(hModule);
#endif
}
VOID
CDeviceView::SetFocus()
{
}
/* PRIVATE METHODS ********************************************/
unsigned int __stdcall CDeviceView::ListDevicesThread(void *Param)
{
CDeviceView *This = (CDeviceView *)Param;
/* Clear any existing data */
This->EmptyDeviceView();
/* Reset the tree root */
This->m_hTreeRoot = NULL;
switch (This->m_ListDevices)
{
case DevicesByType:
(VOID)This->ListDevicesByType();
break;
case DevicesByConnection:
(VOID)This->ListDevicesByConnection();
break;
case ResourcesByType:
break;
case ResourcesByConnection:
break;
}
return 0;
}
BOOL
CDeviceView::ListDevicesByType()
{
HTREEITEM hDevItem = NULL;
GUID ClassGuid;
WCHAR ClassName[CLASS_NAME_LEN];
WCHAR ClassDescription[CLASS_DESC_LEN];
INT ClassIndex;
INT ClassImage;
LPTSTR DeviceId = NULL;
BOOL bSuccess;
/* Get the details of the root of the device tree */
bSuccess = m_Devices->GetDeviceTreeRoot(ClassName, CLASS_NAME_LEN, &ClassImage);
if (bSuccess)
{
/* Add the root of the device tree to the treeview */
m_hTreeRoot = InsertIntoTreeView(NULL,
ClassName,
NULL,
ClassImage,
0);
}
/* If something went wrong, bail */
if (m_hTreeRoot == NULL) return FALSE;
ClassIndex = 0;
do
{
/* Get the next device class */
bSuccess = m_Devices->EnumClasses(ClassIndex,
&ClassGuid,
ClassName,
CLASS_NAME_LEN,
ClassDescription,
CLASS_DESC_LEN,
&ClassImage);
if (bSuccess)
{
BOOL bDevSuccess, AddedParent;
HANDLE Handle = NULL;
WCHAR DeviceName[DEVICE_NAME_LEN];
INT DeviceIndex = 0;
BOOL MoreItems = FALSE;
BOOL DeviceHasProblem = FALSE;
ULONG DeviceStatus = 0;
ULONG ProblemNumber = 0;
ULONG OverlayImage = 0;
AddedParent = FALSE;
do
{
/* Enum all the devices that belong to this class */
bDevSuccess = m_Devices->EnumDevicesForClass(&Handle,
&ClassGuid,
DeviceIndex,
&MoreItems,
DeviceName,
DEVICE_NAME_LEN,
&DeviceId,
&DeviceStatus,
&ProblemNumber);
if (bDevSuccess)
{
/* Check if this is a hidden device */
if (DeviceStatus & DN_NO_SHOW_IN_DM)
{
if (m_ShowHidden == FALSE)
{
DeviceIndex++;
continue;
}
}
/* Check if the device has a problem */
if (DeviceStatus & DN_HAS_PROBLEM)
{
DeviceHasProblem = TRUE;
OverlayImage = 1;
}
/* The disabled overlay takes precidence over the problem overlay */
if (ProblemNumber == CM_PROB_HARDWARE_DISABLED)
{
OverlayImage = 2;
}
/* We have a device, we're gonna need to add the parent first */
if (AddedParent == FALSE)
{
/* Insert the new class under the root item */
hDevItem = InsertIntoTreeView(m_hTreeRoot,
ClassDescription,
NULL,
ClassImage,
0);
/* Don't add it again */
AddedParent = TRUE;
}
/* Add the device under the class item */
(VOID)InsertIntoTreeView(hDevItem,
DeviceName,
(LPARAM)DeviceId,
ClassImage,
OverlayImage);
/* Check if there's a problem with the device */
if (DeviceHasProblem)
{
/* Expand the class */
(VOID)TreeView_Expand(m_hTreeView,
hDevItem,
TVE_EXPAND);
}
}
DeviceIndex++;
} while (MoreItems);
/* Check if this class has any devices */
if (AddedParent == TRUE)
{
/* Sort the devices alphabetically */
(VOID)TreeView_SortChildren(m_hTreeView,
hDevItem,
0);
}
}
ClassIndex++;
} while (bSuccess);
/* Sort the classes alphabetically */
(VOID)TreeView_SortChildren(m_hTreeView,
m_hTreeRoot,
0);
/* Expand the root item */
(VOID)TreeView_Expand(m_hTreeView,
m_hTreeRoot,
TVE_EXPAND);
/* Pre-select the root item */
(VOID)TreeView_SelectItem(m_hTreeView,
m_hTreeRoot);
return 0;
}
BOOL
CDeviceView::ListDevicesByConnection()
{
WCHAR DeviceName[DEVICE_NAME_LEN];
INT ClassImage;
BOOL bSuccess;
/* Get the details of the root of the device tree */
bSuccess = m_Devices->GetDeviceTreeRoot(DeviceName, DEVICE_NAME_LEN, &ClassImage);
if (bSuccess)
{
/* Add the root of the device tree to the treeview */
m_hTreeRoot = InsertIntoTreeView(NULL,
DeviceName,
NULL,
ClassImage,
0);
}
/* Walk the device tree and add all the devices */
RecurseChildDevices(m_Devices->GetRootDevice(), m_hTreeRoot);
/* Expand the root item */
(VOID)TreeView_Expand(m_hTreeView,
m_hTreeRoot,
TVE_EXPAND);
return TRUE;
}
VOID
CDeviceView::RecurseChildDevices(
_In_ DEVINST ParentDevice,
_In_ HTREEITEM hParentTreeItem
)
{
HTREEITEM hDevItem = NULL;
DEVINST Device;
WCHAR DeviceName[DEVICE_NAME_LEN];
LPTSTR DeviceId = NULL;
INT ClassImage;
BOOL IsUnknown = FALSE;
BOOL IsHidden = FALSE;
ULONG DeviceStatus = 0;
ULONG ProblemNumber = 0;
UINT OverlayImage = 0;
BOOL bSuccess;
/* Check if the parent has any child devices */
if (m_Devices->GetChildDevice(ParentDevice, &Device) == FALSE)
return;
/* Lookup the info about this device */
bSuccess = m_Devices->GetDevice(Device,
DeviceName,
DEVICE_NAME_LEN,
&DeviceId,
&ClassImage,
&DeviceStatus,
&ProblemNumber);
if (bSuccess)
{
/* Check if this is a hidden device */
if ((m_ShowHidden == TRUE) || (!(DeviceStatus & DN_NO_SHOW_IN_DM)))
{
/* Check if the device has a problem */
if (DeviceStatus & DN_HAS_PROBLEM)
{
OverlayImage = 1;
}
/* The disabled overlay takes precidence over the problem overlay */
if (ProblemNumber == CM_PROB_HARDWARE_DISABLED)
{
OverlayImage = 2;
}
/* Add this device to the tree under its parent */
hDevItem = InsertIntoTreeView(hParentTreeItem,
DeviceName,
(LPARAM)DeviceId,
ClassImage,
0);
if (hDevItem)
{
/* Check if this child has any children itself */
RecurseChildDevices(Device, hDevItem);
}
}
}
for (;;)
{
/* Check if the parent device has anything at the same level */
bSuccess = m_Devices->GetSiblingDevice(Device, &Device);
if (bSuccess == FALSE) break;
/* Lookup the info about this device */
bSuccess = m_Devices->GetDevice(Device,
DeviceName,
DEVICE_NAME_LEN,
&DeviceId,
&ClassImage,
&DeviceStatus,
&ProblemNumber);
if (bSuccess)
{
/* Check if this is a hidden device */
if (DeviceStatus & DN_NO_SHOW_IN_DM)
{
if (m_ShowHidden == FALSE)
continue;
}
/* Check if the device has a problem */
if (DeviceStatus & DN_HAS_PROBLEM)
{
OverlayImage = 1;
}
/* The disabled overlay takes precidence over the problem overlay */
if (ProblemNumber == CM_PROB_HARDWARE_DISABLED)
{
OverlayImage = 2;
}
/* Add this device to the tree under its parent */
hDevItem = InsertIntoTreeView(hParentTreeItem,
DeviceName,
(LPARAM)DeviceId,
ClassImage,
0);
if (hDevItem)
{
/* Check if this child has any children itself */
RecurseChildDevices(Device, hDevItem);
}
}
}
(void)TreeView_SortChildren(m_hTreeView,
hParentTreeItem,
0);
}
HTREEITEM
CDeviceView::InsertIntoTreeView(
_In_ HTREEITEM hParent,
_In_z_ LPWSTR lpLabel,
_In_ LPARAM lParam,
_In_ INT DevImage,
_In_ UINT OverlayImage
)
{
TV_ITEMW tvi;
TV_INSERTSTRUCT tvins;
ZeroMemory(&tvi, sizeof(tvi));
ZeroMemory(&tvins, sizeof(tvins));
tvi.mask = TVIF_TEXT | TVIF_PARAM | TVIF_IMAGE | TVIF_SELECTEDIMAGE;
tvi.pszText = lpLabel;
tvi.cchTextMax = wcslen(lpLabel);
tvi.lParam = lParam;
tvi.iImage = DevImage;
tvi.iSelectedImage = DevImage;
if (OverlayImage != 0)
{
tvi.mask |= TVIF_STATE;
tvi.stateMask = TVIS_OVERLAYMASK;
tvi.state = INDEXTOOVERLAYMASK(OverlayImage);
}
tvins.item = tvi;
tvins.hParent = hParent;
return TreeView_InsertItem(m_hTreeView, &tvins);
}
VOID
CDeviceView::RecurseDeviceView(
_In_ HTREEITEM hParentItem
)
{
HTREEITEM hItem;
TVITEMW tvItem;
/* Check if this node has any children */
hItem = TreeView_GetChild(m_hTreeView, hParentItem);
if (hItem == NULL) return;
/* The lParam contains the device id */
tvItem.hItem = hItem;
tvItem.mask = TVIF_PARAM;
/* Get the item data */
if (TreeView_GetItem(m_hTreeView, &tvItem) &&
tvItem.lParam != NULL)
{
/* Free the device id */
HeapFree(GetProcessHeap(), 0, (LPVOID)tvItem.lParam);
}
/* This node may have its own children */
RecurseDeviceView(hItem);
for (;;)
{
/* Get the next item at this level */
hItem = TreeView_GetNextSibling(m_hTreeView, hItem);
if (hItem == NULL) break;
/* The lParam contains the device id */
tvItem.hItem = hItem;
tvItem.mask = TVIF_PARAM;
/* Get the item data and free the device id */
if (TreeView_GetItem(m_hTreeView, &tvItem))
{
if (tvItem.lParam != NULL)
HeapFree(GetProcessHeap(), 0, (LPVOID)tvItem.lParam);
}
/* This node may have its own children */
RecurseDeviceView(hItem);
}
}
VOID
CDeviceView::EmptyDeviceView()
{
HTREEITEM hItem;
/* Check if there are any items in the tree */
hItem = TreeView_GetRoot(m_hTreeView);
if (hItem == NULL) return;
/* Free all the Device Ids */
RecurseDeviceView(hItem);
/* Delete all the items */
(VOID)TreeView_DeleteAllItems(m_hTreeView);
}

View File

@@ -1,23 +1,88 @@
#pragma once
#include "Devices.h"
enum ListDevices
{
DevicesByType,
DevicesByConnection,
ResourcesByType,
ResourcesByConnection
};
class CDeviceView : public CDevices
{
CDevices *m_Devices;
HWND m_hMainWnd;
HWND m_hTreeView;
HWND m_hPropertyDialog;
HWND m_hShortcutMenu;
ListDevices m_ListDevices;
HIMAGELIST m_ImageList;
HTREEITEM m_hTreeRoot;
BOOL m_ShowHidden;
public:
CDeviceView(HWND hMainWnd);
CDeviceView(
HWND hMainWnd,
ListDevices List
);
~CDeviceView(void);
BOOL Initialize();
BOOL Uninitialize();
VOID Size(INT x, INT y, INT cx, INT cy);
VOID Size(
_In_ INT x,
_In_ INT y,
_In_ INT cx,
_In_ INT cy
);
VOID Refresh();
VOID DisplayPropertySheet();
VOID SetFocus();
VOID SetDeviceListType(ListDevices List)
{
m_ListDevices = List;
}
VOID ShowHiddenDevices(_In_ BOOL ShowHidden)
{
m_ShowHidden = ShowHidden;
}
private:
static unsigned int __stdcall ListDevicesThread(
void *Param
);
BOOL ListDevicesByConnection(
);
BOOL ListDevicesByType(
);
VOID RecurseChildDevices(
_In_ DEVINST ParentDevice,
_In_ HTREEITEM hParentTreeItem
);
HTREEITEM InsertIntoTreeView(
_In_ HTREEITEM hParent,
_In_z_ LPWSTR lpLabel,
_In_ LPARAM lParam,
_In_ INT DevImage,
_In_ UINT OverlayImage
);
VOID RecurseDeviceView(
_In_ HTREEITEM hParentItem
);
VOID EmptyDeviceView(
);
};

View File

@@ -1,12 +1,622 @@
#include "StdAfx.h"
/*
* PROJECT: ReactOS Device Manager
* LICENSE: GPL - See COPYING in the top level directory
* FILE: base/applications/mscutils/devmgmt/devices.cpp
* PURPOSE: Wrapper around setupapi functions
* COPYRIGHT: Copyright 2014 Ged Murphy <gedmurphy@gmail.com>
*
*/
#include "stdafx.h"
#include "devmgmt.h"
#include "Devices.h"
CDevices::CDevices(void)
{
}
/* PUBLIC METHODS *****************************************/
CDevices::CDevices(void) :
m_bInitialized(FALSE),
m_RootImageIndex(-1)
{
ZeroMemory(&m_ImageListData, sizeof(SP_CLASSIMAGELIST_DATA));
m_RootName[0] = UNICODE_NULL;
}
CDevices::~CDevices(void)
{
ATLASSERT(m_bInitialized == FALSE);
}
BOOL
CDevices::Initialize()
{
BOOL bSuccess;
ATLASSERT(m_bInitialized == FALSE);
/* Get the device image list */
m_ImageListData.cbSize = sizeof(SP_CLASSIMAGELIST_DATA);
bSuccess = SetupDiGetClassImageList(&m_ImageListData);
if (bSuccess == FALSE) return FALSE;
bSuccess = CreateRootDevice();
if (bSuccess) m_bInitialized = TRUE;
return m_bInitialized;
}
BOOL
CDevices::Uninitialize()
{
if (m_ImageListData.ImageList != NULL)
{
SetupDiDestroyClassImageList(&m_ImageListData);
ZeroMemory(&m_ImageListData, sizeof(SP_CLASSIMAGELIST_DATA));
}
m_bInitialized = FALSE;
return TRUE;
}
BOOL
CDevices::GetDeviceTreeRoot(
_Out_ LPWSTR RootName,
_In_ DWORD RootNameSize,
_Out_ PINT RootImageIndex
)
{
wcscpy_s(RootName, RootNameSize, m_RootName);
*RootImageIndex = m_RootImageIndex;
return TRUE;
}
BOOL
CDevices::GetChildDevice(
_In_ DEVINST ParentDevInst,
_Out_ PDEVINST DevInst
)
{
CONFIGRET cr;
cr = CM_Get_Child(DevInst,
ParentDevInst,
0);
return (cr == CR_SUCCESS);
}
BOOL
CDevices::GetSiblingDevice(
_In_ DEVINST PrevDevice,
_Out_ PDEVINST DevInst
)
{
CONFIGRET cr;
cr = CM_Get_Sibling(DevInst,
PrevDevice,
0);
return (cr == CR_SUCCESS);
}
BOOL
CDevices::GetDeviceStatus(
_In_ LPWSTR DeviceId,
_Out_ PULONG Status,
_Out_ PULONG ProblemNumber
)
{
DEVINST DeviceInstance;
CONFIGRET cr;
*Status = 0;
*ProblemNumber = 0;
/* Use the device id string to lookup the instance */
cr = CM_Locate_DevNodeW(&DeviceInstance,
DeviceId,
CM_LOCATE_DEVNODE_NORMAL);
if (cr == CR_SUCCESS)
{
/* Get the status of this device */
cr = CM_Get_DevNode_Status_Ex(Status,
ProblemNumber,
DeviceInstance,
0,
NULL);
}
return (cr == CR_SUCCESS) ? TRUE : FALSE;
}
BOOL
CDevices::GetDevice(
_In_ DEVINST Device,
_Out_writes_(DeviceNameSize) LPWSTR DeviceName,
_In_ DWORD DeviceNameSize,
_Outptr_ LPWSTR *DeviceId,
_Out_ PINT ClassImage,
_Out_ PULONG Status,
_Out_ PULONG ProblemNumber
)
{
WCHAR ClassGuidString[MAX_GUID_STRING_LEN];
GUID ClassGuid;
ULONG ulLength;
CONFIGRET cr;
BOOL bSuccess;
*DeviceId = NULL;
/* Get the length of the device id string */
cr = CM_Get_Device_ID_Size(&ulLength, Device, 0);
if (cr == CR_SUCCESS)
{
/* We alloc heap here because this will be stored in the lParam of the TV */
*DeviceId = (LPWSTR)HeapAlloc(GetProcessHeap(),
0,
(ulLength + 1) * sizeof(WCHAR));
if (*DeviceId)
{
/* Now get the actual device id */
cr = CM_Get_Device_IDW(Device,
*DeviceId,
ulLength + 1,
0);
if (cr != CR_SUCCESS)
{
HeapFree(GetProcessHeap(), 0, *DeviceId);
*DeviceId = NULL;
}
}
}
/* Make sure we got the string */
if (*DeviceId == NULL)
return FALSE;
/* Get the current status of the device */
bSuccess = GetDeviceStatus(*DeviceId, Status, ProblemNumber);
if (bSuccess == FALSE)
{
HeapFree(GetProcessHeap(), 0, *DeviceId);
*DeviceId = NULL;
return FALSE;
}
/* Get the class guid for this device */
ulLength = MAX_GUID_STRING_LEN * sizeof(WCHAR);
cr = CM_Get_DevNode_Registry_PropertyW(Device,
CM_DRP_CLASSGUID,
NULL,
ClassGuidString,
&ulLength,
0);
if (cr == CR_SUCCESS)
{
/* Convert the string to a proper guid */
CLSIDFromString(ClassGuidString, &ClassGuid);
}
else
{
/* It's a device with no driver */
ClassGuid = GUID_DEVCLASS_UNKNOWN;
}
/* Get the image for the class this device is in */
SetupDiGetClassImageIndex(&m_ImageListData,
&ClassGuid,
ClassImage);
/* Get the description for the device */
ulLength = DeviceNameSize * sizeof(WCHAR);
cr = CM_Get_DevNode_Registry_PropertyW(Device,
CM_DRP_FRIENDLYNAME,
NULL,
DeviceName,
&ulLength,
0);
if (cr != CR_SUCCESS)
{
ulLength = DeviceNameSize * sizeof(WCHAR);
cr = CM_Get_DevNode_Registry_PropertyW(Device,
CM_DRP_DEVICEDESC,
NULL,
DeviceName,
&ulLength,
0);
}
/* Cleanup if something failed */
if (cr != CR_SUCCESS)
{
HeapFree(GetProcessHeap(), 0, *DeviceId);
*DeviceId = NULL;
}
return (cr == CR_SUCCESS ? TRUE : FALSE);
}
BOOL
CDevices::EnumClasses(
_In_ ULONG ClassIndex,
_Out_writes_bytes_(sizeof(GUID)) LPGUID ClassGuid,
_Out_writes_(ClassNameSize) LPWSTR ClassName,
_In_ DWORD ClassNameSize,
_Out_writes_(ClassDescSize) LPWSTR ClassDesc,
_In_ DWORD ClassDescSize,
_Out_ PINT ClassImage
)
{
DWORD RequiredSize, Type, Size;
CONFIGRET cr;
DWORD Success;
HKEY hKey;
ClassName[0] = UNICODE_NULL;
ClassDesc[0] = UNICODE_NULL;
*ClassImage = -1;
/* Get the next class in the list */
cr = CM_Enumerate_Classes(ClassIndex,
ClassGuid,
0);
if (cr != CR_SUCCESS) return FALSE;
/* Get the name of the device class */
RequiredSize = MAX_CLASS_NAME_LEN;
(VOID)SetupDiClassNameFromGuidW(ClassGuid,
ClassName,
RequiredSize,
&RequiredSize);
/* Open the registry key for this class */
hKey = SetupDiOpenClassRegKeyExW(ClassGuid,
MAXIMUM_ALLOWED,
DIOCR_INSTALLER,
NULL,
0);
if (hKey != INVALID_HANDLE_VALUE)
{
Size = ClassDescSize;
Type = REG_SZ;
/* Lookup the class description (win7+) */
Success = RegQueryValueExW(hKey,
L"ClassDesc",
NULL,
&Type,
(LPBYTE)ClassDesc,
&Size);
if (Success == ERROR_SUCCESS)
{
/* Check if the string starts with an @ */
if (ClassDesc[0] == L'@')
{
/* The description is located in a module resource */
Success = ConvertResourceDescriptorToString(ClassDesc, ClassDescSize);
}
}
else if (Success == ERROR_FILE_NOT_FOUND)
{
/* WinXP stores the description in the default value */
Success = RegQueryValueExW(hKey,
NULL,
NULL,
&Type,
(LPBYTE)ClassDesc,
&Size);
}
/* Close the registry key */
RegCloseKey(hKey);
}
else
{
Success = GetLastError();
}
/* Check if we failed to get the class description */
if (Success != ERROR_SUCCESS)
{
/* Use the class name as the description */
wcscpy_s(ClassDesc, ClassDescSize, ClassName);
}
/* Get the image index for this class */
(VOID)SetupDiGetClassImageIndex(&m_ImageListData,
ClassGuid,
ClassImage);
return TRUE;
}
BOOL
CDevices::EnumDevicesForClass(
_Inout_opt_ LPHANDLE DeviceHandle,
_In_ LPCGUID ClassGuid,
_In_ DWORD Index,
_Out_ LPBOOL MoreItems,
_Out_ LPTSTR DeviceName,
_In_ DWORD DeviceNameSize,
_Outptr_ LPTSTR *DeviceId,
_Out_ PULONG Status,
_Out_ PULONG ProblemNumber
)
{
SP_DEVINFO_DATA DeviceInfoData;
DWORD DevIdSize;
HDEVINFO hDevInfo;
BOOL bUnknown, bSuccess;
*MoreItems = FALSE;
*DeviceName = NULL;
*DeviceId = NULL;
bUnknown = FALSE;
/* The unknown class is a special case */
if (IsEqualGUID(*ClassGuid, GUID_DEVCLASS_UNKNOWN))
bUnknown = TRUE;
/* Check if this is the first call for this class */
if (*DeviceHandle == NULL)
{
ATLASSERT(Index == 0);
/* Check for the special case */
if (bUnknown == TRUE)
{
/* Get device info for all devices for all classes */
hDevInfo = SetupDiGetClassDevsW(NULL,
NULL,
NULL,
DIGCF_ALLCLASSES);
if (hDevInfo == INVALID_HANDLE_VALUE)
return FALSE;
}
else
{
/* We only want the devices for this class */
hDevInfo = SetupDiGetClassDevsW(ClassGuid,
NULL,
NULL,
DIGCF_PRESENT);
if (hDevInfo == INVALID_HANDLE_VALUE)
return FALSE;
}
/* Store the handle for the next call */
*DeviceHandle = (HANDLE)hDevInfo;
}
else
{
hDevInfo = (HDEVINFO)*DeviceHandle;
}
/* Get the device info for this device in the class */
ZeroMemory(&DeviceInfoData, sizeof(SP_DEVINFO_DATA));
DeviceInfoData.cbSize = sizeof(SP_DEVINFO_DATA);
bSuccess = SetupDiEnumDeviceInfo(hDevInfo,
Index,
&DeviceInfoData);
if (bSuccess == FALSE) goto Quit;
/* We found a device, let the caller know they might be more */
*MoreItems = TRUE;
/* Check if this is the unknown class */
if (bUnknown)
{
/* We're looking for devices without guids */
if (IsEqualGUID(DeviceInfoData.ClassGuid, GUID_NULL) == FALSE)
{
/* This is a known device, we aren't interested in it */
return FALSE;
}
}
/* Get the size required to hold the device id */
bSuccess = SetupDiGetDeviceInstanceIdW(hDevInfo,
&DeviceInfoData,
NULL,
0,
&DevIdSize);
if (bSuccess == FALSE && (GetLastError() != ERROR_INSUFFICIENT_BUFFER))
goto Quit;
/* Allocate some heap to hold the device string */
*DeviceId = (LPTSTR)HeapAlloc(GetProcessHeap(),
0,
DevIdSize * sizeof(WCHAR));
if (*DeviceId == NULL) goto Quit;
/* Now get the device id string */
bSuccess = SetupDiGetDeviceInstanceIdW(hDevInfo,
&DeviceInfoData,
*DeviceId,
DevIdSize,
NULL);
if (bSuccess == FALSE) goto Quit;
/* Skip the root device */
if (*DeviceId != NULL &&
wcscmp(*DeviceId, L"HTREE\\ROOT\\0") == 0)
{
bSuccess = FALSE;
goto Quit;
}
/* Get the current status of the device */
bSuccess = GetDeviceStatus(*DeviceId, Status, ProblemNumber);
if (bSuccess == FALSE) goto Quit;
/* Get the device's friendly name */
bSuccess = SetupDiGetDeviceRegistryPropertyW(hDevInfo,
&DeviceInfoData,
SPDRP_FRIENDLYNAME,
0,
(BYTE*)DeviceName,
256,
NULL);
if (bSuccess == FALSE)
{
/* if the friendly name fails, try the description instead */
bSuccess = SetupDiGetDeviceRegistryPropertyW(hDevInfo,
&DeviceInfoData,
SPDRP_DEVICEDESC,
0,
(BYTE*)DeviceName,
256,
NULL);
}
/* If we didn't find a name, check if this is an unknown device */
if (bSuccess == FALSE && bUnknown == TRUE)
{
/* We add in our own text */
wcscpy_s(DeviceName, 256, L"Unknown device");
bSuccess = TRUE;
}
Quit:
if (MoreItems == FALSE)
SetupDiDestroyDeviceInfoList(hDevInfo);
if (bSuccess == FALSE)
{
if (*DeviceId)
{
HeapFree(GetProcessHeap(), 0, *DeviceId);
*DeviceId = NULL;
}
}
return bSuccess;
}
/* PRIVATE METHODS ******************************************/
BOOL
CDevices::CreateRootDevice()
{
HBITMAP hRootImage = NULL;
DWORD Size = ROOT_NAME_SIZE;
BOOL bSuccess = FALSE;
CONFIGRET cr;
/* The root name is the computer name */
(VOID)GetComputerNameW(m_RootName, &Size);
/* Load the bitmap we'll be using as the root image */
hRootImage = LoadBitmapW(g_hInstance,
MAKEINTRESOURCEW(IDB_ROOT_IMAGE));
if (hRootImage == NULL) goto Cleanup;
/* Add this bitmap to the device image list. This is a bit hacky, but it's safe */
m_RootImageIndex = ImageList_Add(m_ImageListData.ImageList,
hRootImage,
NULL);
if (m_RootImageIndex == -1)
goto Cleanup;
/* Get the root instance */
cr = CM_Locate_DevNodeW(&m_RootDevInst,
NULL,
CM_LOCATE_DEVNODE_NORMAL);
if (cr == CR_SUCCESS)
bSuccess = TRUE;
Cleanup:
if (bSuccess == FALSE)
{
SetupDiDestroyClassImageList(&m_ImageListData);
ZeroMemory(&m_ImageListData, sizeof(SP_CLASSIMAGELIST_DATA));
}
if (hRootImage) DeleteObject(hRootImage);
return bSuccess;
}
DWORD
CDevices::ConvertResourceDescriptorToString(
_Inout_z_ LPWSTR ResourceDescriptor,
_In_ DWORD ResourceDescriptorSize
)
{
WCHAR ModulePath[MAX_PATH];
WCHAR ResString[256];
INT ResourceId;
HMODULE hModule;
LPWSTR ptr;
DWORD Size;
DWORD dwError;
/* First check for a semi colon */
ptr = wcschr(ResourceDescriptor, L';');
if (ptr)
{
/* This must be an inf based descriptor, the desc is after the semi colon */
wcscpy_s(ResourceDescriptor, ResourceDescriptorSize, ++ptr);
dwError = ERROR_SUCCESS;
}
else
{
/* This must be a dll resource based descriptor. Find the comma */
ptr = wcschr(ResourceDescriptor, L',');
if (ptr == NULL) return ERROR_INVALID_DATA;
/* Terminate the string where the comma was */
*ptr = UNICODE_NULL;
/* Expand any environment strings */
Size = ExpandEnvironmentStringsW(&ResourceDescriptor[1], ModulePath, MAX_PATH);
if (Size > MAX_PATH) return ERROR_BUFFER_OVERFLOW;
if (Size == 0) return GetLastError();
/* Put the comma back and move past it */
*ptr = L',';
ptr++;
/* Load the dll */
hModule = LoadLibraryExW(ModulePath, NULL, LOAD_LIBRARY_AS_DATAFILE);
if (hModule == NULL) return GetLastError();
/* Convert the resource id to a number */
ResourceId = _wtoi(ptr);
/* If the number is negative, make it positive */
if (ResourceId < 0) ResourceId = -ResourceId;
/* Load the string from the dll */
if (LoadStringW(hModule, ResourceId, ResString, 256))
{
wcscpy_s(ResourceDescriptor, ResourceDescriptorSize, ResString);
dwError = ERROR_SUCCESS;
}
else
{
dwError = GetLastError();
}
/* Free the library */
FreeLibrary(hModule);
}
return dwError;
}

View File

@@ -1,8 +1,97 @@
#pragma once
#define ROOT_NAME_SIZE MAX_COMPUTERNAME_LENGTH + 1
class CDevices
{
private:
SP_CLASSIMAGELIST_DATA m_ImageListData;
BOOL m_bInitialized;
DEVINST m_RootDevInst;
WCHAR m_RootName[ROOT_NAME_SIZE];
INT m_RootImageIndex;
public:
CDevices(void);
~CDevices(void);
BOOL Initialize(
);
BOOL Uninitialize(
);
BOOL GetDeviceTreeRoot(
_Out_ LPWSTR RootName,
_In_ DWORD RootNameSize,
_Out_ PINT RootImageIndex
);
BOOL GetChildDevice(
_In_ DEVINST ParentDevInst,
_Out_ PDEVINST DevInst
);
BOOL GetSiblingDevice(
_In_ DEVINST PrevDevice,
_Out_ PDEVINST DevInst
);
BOOL GetDevice(
_In_ DEVINST Device,
_Out_writes_(DeviceNameSize) LPTSTR DeviceName,
_In_ DWORD DeviceNameSize,
_Outptr_ LPTSTR *DeviceId,
_Out_ PINT ClassImage,
_Out_ PULONG Status,
_Out_ PULONG ProblemNumber
);
BOOL EnumClasses(
_In_ ULONG ClassIndex,
_Out_writes_bytes_(sizeof(GUID)) LPGUID ClassGuid,
_Out_writes_(ClassNameSize) LPWSTR ClassName,
_In_ DWORD ClassNameSize,
_Out_writes_(ClassDescSize) LPWSTR ClassDesc,
_In_ DWORD ClassDescSize,
_Out_ PINT ClassImage
);
BOOL EnumDevicesForClass(
_Inout_opt_ LPHANDLE DeviceHandle,
_In_ LPCGUID ClassGuid,
_In_ DWORD Index,
_Out_ LPBOOL MoreItems,
_Out_writes_(DeviceNameSize) LPTSTR DeviceName,
_In_ DWORD DeviceNameSize,
_Outptr_ LPTSTR *DeviceId,
_Out_ PULONG Status,
_Out_ PULONG ProblemNumber
);
BOOL GetDeviceStatus(
_In_ LPWSTR DeviceId,
_Out_ PULONG pulStatus,
_Out_ PULONG pulProblemNumber
);
HIMAGELIST GetImageList() { return m_ImageListData.ImageList; }
DEVINST GetRootDevice() { return m_RootDevInst; }
private:
BOOL CreateImageList(
);
BOOL CreateRootDevice(
);
DWORD ConvertResourceDescriptorToString(
_Inout_z_ LPWSTR ResourceDescriptor,
_In_ DWORD ResourceDescriptorSize
);
};

File diff suppressed because it is too large Load Diff

View File

@@ -14,10 +14,25 @@ class CMainWindow
HWND m_hMainWnd;
HWND m_hStatusBar;
HWND m_hToolBar;
HIMAGELIST m_ToolbarhImageList;
HMENU m_hMenu;
int m_CmdShow;
public:
CMainWindow(void);
~CMainWindow(void);
BOOL Initialize(LPCTSTR lpCaption, int nCmdShow);
INT Run();
VOID Uninitialize();
private:
static LRESULT CALLBACK MainWndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam);
static LRESULT CALLBACK MainWndProc(
HWND hwnd,
UINT msg,
WPARAM wParam,
LPARAM lParam
);
LRESULT OnCreate(HWND hwnd);
LRESULT OnDestroy();
@@ -28,16 +43,23 @@ private:
BOOL CreateToolBar();
BOOL CreateStatusBar();
BOOL StatusBarLoadString(HWND hStatusBar, INT PartId, HINSTANCE hInstance, UINT uID);
public:
CMainWindow(void);
~CMainWindow(void);
BOOL Initialize(LPCTSTR lpCaption, int nCmdShow);
INT Run();
VOID Uninitialize();
BOOL StatusBarLoadString(
HWND hStatusBar,
INT PartId,
HINSTANCE hInstance,
UINT uID
);
BOOL MainWndMenuHint(
WORD CmdId,
const MENU_HINT *HintArray,
DWORD HintsCount,
UINT DefHintId
);
BOOL UpdateDevicesDisplay(
ListDevices List
);
};

View File

@@ -19,12 +19,15 @@
#define IDR_MAINMENU 102
#define IDR_POPUP 103
#define IDC_DEVBYTYPE 104
#define IDC_DEVBYCONN 105
#define IDC_RESBYTYPE 106
#define IDC_RESBYCONN 107
#define IDC_SHOWHIDDEN 108
/* tooltips */
#define IDS_TOOLTIP_PROP 6000
#define IDS_TOOLTIP_REFRESH 6001
#define IDS_TOOLTIP_HELP 6002
#define IDS_TOOLTIP_EXIT 6003
/* button bitmaps */
#define IDB_PROP 10000
@@ -34,7 +37,6 @@
#define TBICON_PROP 0
#define TBICON_REFRESH 1
#define TBICON_HELP 2
#define TBICON_EXIT 3
/* about box info */
#define IDD_ABOUTBOX 200
@@ -51,6 +53,11 @@
#define IDS_HINT_ABOUT 20005
#define IDS_HINT_EXIT 20006
#define IDS_HINT_DEV_BY_TYPE 20020
#define IDS_HINT_DEV_BY_CONN 20021
#define IDS_HINT_RES_BY_TYPE 20022
#define IDS_HINT_RES_BY_CONN 20023
/* system menu hints */
#define IDS_HINT_SYS_RESTORE 21001
#define IDS_HINT_SYS_MOVE 21002

View File

@@ -19,12 +19,12 @@ wWinMain(HINSTANCE hThisInstance,
int Ret = 1;
/* Check if the app is already running */
hMutex = CreateMutexW(NULL, TRUE, L"devmgmt_mutex");
hMutex = CreateMutexW(NULL, TRUE, L"devmgmt_mutex2");
if (hMutex == NULL || GetLastError() == ERROR_ALREADY_EXISTS)
{
/* Cleanup and exit */
if (hMutex) CloseHandle(hMutex);
return 0;
//if (hMutex) CloseHandle(hMutex);
//return 0;
}
/* Store the global values */
@@ -40,8 +40,7 @@ wWinMain(HINSTANCE hThisInstance,
if (szAppName.LoadStringW(g_hInstance, IDS_APPNAME))
{
/* Initialize the main window */
if (MainWindow.Initialize(szAppName,
nCmdShow))
if (MainWindow.Initialize(szAppName, nCmdShow))
{
/* Run the application */
Ret = MainWindow.Run();

View File

@@ -0,0 +1,24 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly
xmlns="urn:schemas-microsoft-com:asm.v1"
manifestVersion="1.0">
<assemblyIdentity
name="ReactOS.Apps.devmgmt"
processorArchitecture="*"
version="1.0.0.0"
type="win32"/>
<description>ReactOS Device Manager</description>
<dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
processorArchitecture="*"
publicKeyToken="6595b64144ccf1df"
language="*"
/>
</dependentAssembly>
</dependency>
</assembly>

View File

@@ -1,7 +1,9 @@

Microsoft Visual Studio Solution File, Format Version 11.00
# Visual Studio 2010
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "devmgmt_new", "devmgmt_new.vcxproj", "{A5AB2C1A-A085-4A2A-951C-F3CF22DA2890}"
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 2013
VisualStudioVersion = 12.0.30501.0
MinimumVisualStudioVersion = 10.0.40219.1
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "devmgmt_new", "devmgmt_new.vcxproj", "{47B3358F-E7C3-4D02-9310-68813B9292E0}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -9,10 +11,12 @@ Global
Release|Win32 = Release|Win32
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{A5AB2C1A-A085-4A2A-951C-F3CF22DA2890}.Debug|Win32.ActiveCfg = Debug|Win32
{A5AB2C1A-A085-4A2A-951C-F3CF22DA2890}.Debug|Win32.Build.0 = Debug|Win32
{A5AB2C1A-A085-4A2A-951C-F3CF22DA2890}.Release|Win32.ActiveCfg = Release|Win32
{A5AB2C1A-A085-4A2A-951C-F3CF22DA2890}.Release|Win32.Build.0 = Release|Win32
{47B3358F-E7C3-4D02-9310-68813B9292E0}.Debug|Win32.ActiveCfg = Debug|Win32
{47B3358F-E7C3-4D02-9310-68813B9292E0}.Debug|Win32.Build.0 = Debug|Win32
{47B3358F-E7C3-4D02-9310-68813B9292E0}.Debug|Win32.Deploy.0 = Debug|Win32
{47B3358F-E7C3-4D02-9310-68813B9292E0}.Release|Win32.ActiveCfg = Release|Win32
{47B3358F-E7C3-4D02-9310-68813B9292E0}.Release|Win32.Build.0 = Release|Win32
{47B3358F-E7C3-4D02-9310-68813B9292E0}.Release|Win32.Deploy.0 = Release|Win32
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
@@ -11,7 +11,7 @@
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{A5AB2C1A-A085-4A2A-951C-F3CF22DA2890}</ProjectGuid>
<ProjectGuid>{47B3358F-E7C3-4D02-9310-68813B9292E0}</ProjectGuid>
<Keyword>Win32Proj</Keyword>
<RootNamespace>devmgmt_new</RootNamespace>
</PropertyGroup>
@@ -19,15 +19,15 @@
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v120_xp</PlatformToolset>
<CharacterSet>Unicode</CharacterSet>
<UseOfAtl>Static</UseOfAtl>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v120_xp</PlatformToolset>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>Unicode</CharacterSet>
<UseOfAtl>Static</UseOfAtl>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
@@ -41,13 +41,16 @@
<PropertyGroup Label="UserMacros" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<LinkIncremental>true</LinkIncremental>
<GenerateManifest>false</GenerateManifest>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<LinkIncremental>false</LinkIncremental>
<GenerateManifest>false</GenerateManifest>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<PrecompiledHeader>Use</PrecompiledHeader>
<PrecompiledHeader>
</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -55,13 +58,17 @@
<Link>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
<AdditionalDependencies>comctl32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalDependencies>UxTheme.lib;comctl32.lib;setupapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
<ResourceCompile>
<PreprocessorDefinitions>LANGUAGE_EN_US;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ResourceCompile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<PrecompiledHeader>Use</PrecompiledHeader>
<PrecompiledHeader>
</PrecompiledHeader>
<Optimization>MaxSpeed</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
@@ -72,8 +79,16 @@
<GenerateDebugInformation>true</GenerateDebugInformation>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
<AdditionalDependencies>UxTheme.lib;comctl32.lib;setupapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ItemDefinitionGroup>
<ItemGroup>
<ClCompile Include="Devices.cpp" />
<ClCompile Include="DeviceView.cpp" />
<ClCompile Include="devmgmt.cpp" />
<ClCompile Include="MainWindow.cpp" />
<ClCompile Include="stdafx.cpp" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="Devices.h" />
<ClInclude Include="DeviceView.h" />
@@ -82,16 +97,6 @@
<ClInclude Include="Resource.h" />
<ClInclude Include="stdafx.h" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="Devices.cpp" />
<ClCompile Include="DeviceView.cpp" />
<ClCompile Include="devmgmt.cpp" />
<ClCompile Include="MainWindow.cpp" />
<ClCompile Include="stdafx.cpp">
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Create</PrecompiledHeader>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="devmgmt.rc" />
</ItemGroup>

View File

@@ -0,0 +1,59 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="Source Files">
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
</Filter>
<Filter Include="Header Files">
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
<Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
</Filter>
<Filter Include="Resource Files">
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
</Filter>
</ItemGroup>
<ItemGroup>
<ClCompile Include="Devices.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="DeviceView.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="devmgmt.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="MainWindow.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="stdafx.cpp">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="Devices.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="DeviceView.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="devmgmt.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="MainWindow.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="Resource.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="stdafx.h">
<Filter>Header Files</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="devmgmt.rc">
<Filter>Resource Files</Filter>
</ResourceCompile>
</ItemGroup>
</Project>

View File

@@ -2,26 +2,26 @@ LANGUAGE LANG_BULGARIAN, SUBLANG_DEFAULT
IDR_MAINMENU MENU
BEGIN
POPUP "&<EFBFBD><EFBFBD><EFBFBD><EFBFBD>"
POPUP "&Файл"
BEGIN
MENUITEM "<EFBFBD><EFBFBD>&<26><><EFBFBD>", IDC_EXIT
MENUITEM "Из&ход", IDC_EXIT
END
POPUP "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"
POPUP "Действие"
BEGIN
MENUITEM "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", IDC_PRINT, GRAYED
MENUITEM "Отпечатване", IDC_PRINT, GRAYED
MENUITEM SEPARATOR
MENUITEM "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", IDC_PROP, GRAYED
MENUITEM "Свойства", IDC_PROP, GRAYED
END
POPUP "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"
POPUP "Изглед"
BEGIN
MENUITEM "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>", IDC_DEVBYTYPE, CHECKED
MENUITEM "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", IDC_STATIC, GRAYED
MENUITEM "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>", IDC_STATIC, GRAYED
MENUITEM "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", IDC_STATIC, GRAYED
MENUITEM "Устройствата според вид", IDC_DEVBYTYPE, CHECKED
MENUITEM "Устройствата според свързването", IDC_STATIC, GRAYED
MENUITEM "Средствата според вида", IDC_STATIC, GRAYED
MENUITEM "Средствата според свързването", IDC_STATIC, GRAYED
END
POPUP "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"
POPUP "Помощ"
BEGIN
MENUITEM "<EFBFBD><EFBFBD>", IDC_ABOUT
MENUITEM "За", IDC_ABOUT
END
END
@@ -29,12 +29,12 @@ IDR_POPUP MENU
BEGIN
POPUP "popup"
BEGIN
MENUITEM "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", IDC_PROP, GRAYED
MENUITEM "Свойства", IDC_PROP, GRAYED
END
END
IDD_ABOUTBOX DIALOGEX 22,16,190,182
CAPTION "<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"
CAPTION "За управителя на устройствата"
FONT 8,"MS Shell Dlg",0,0
STYLE DS_SHELLFONT | WS_BORDER | WS_DLGFRAME | WS_SYSMENU | DS_MODALFRAME
BEGIN
@@ -44,34 +44,34 @@ BEGIN
EDITTEXT IDC_LICENSE_EDIT, 8, 44, 174, 107, WS_VISIBLE | WS_VSCROLL | WS_TABSTOP | ES_READONLY | ES_MULTILINE
END
STRINGTABLE
STRINGTABLE DISCARDABLE
BEGIN
IDS_LICENSE "This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.\r\n\r\nThis program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.\r\n\r\nYou should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA."
END
STRINGTABLE
STRINGTABLE DISCARDABLE
BEGIN
IDS_TOOLTIP_PROP "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"
IDS_TOOLTIP_REFRESH "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"
IDS_TOOLTIP_HELP "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"
IDS_TOOLTIP_EXIT "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"
IDS_TOOLTIP_PROP "Свойства"
IDS_TOOLTIP_REFRESH "Опресняване"
IDS_TOOLTIP_HELP "Помощ"
IDS_TOOLTIP_EXIT "Изход"
END
/* Hints */
STRINGTABLE
STRINGTABLE DISCARDABLE
BEGIN
IDS_APPNAME "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"
IDS_APPNAME "Управител на устройствата на РеактОС"
IDS_HINT_BLANK " "
IDS_HINT_EXIT " <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>."
IDS_HINT_REFRESH " <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>."
IDS_HINT_PROP " <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>."
IDS_HINT_HELP " <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>."
IDS_HINT_ABOUT " <EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>."
IDS_HINT_EXIT " Излиза от приложението."
IDS_HINT_REFRESH " Опреснява списъка на услугите."
IDS_HINT_PROP " Отваря лист за свойства за текущия избор."
IDS_HINT_HELP " Показва помощен прозорец."
IDS_HINT_ABOUT " За управителя на устрйствата на РеактОС."
IDS_HINT_SYS_RESTORE " <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>."
IDS_HINT_SYS_MOVE " <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>."
IDS_HINT_SYS_SIZE " <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>."
IDS_HINT_SYS_MINIMIZE " <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>."
IDS_HINT_SYS_MAXIMIZE " <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>."
IDS_HINT_SYS_CLOSE " <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>."
IDS_HINT_SYS_RESTORE " Възстановява прозореца до обичайния му рамер."
IDS_HINT_SYS_MOVE " Премества прозореца."
IDS_HINT_SYS_SIZE " Преоразмерява прозореца."
IDS_HINT_SYS_MINIMIZE " Свива прозореца в значка."
IDS_HINT_SYS_MAXIMIZE " Разгръща прозореца, докато запълни целия екран."
IDS_HINT_SYS_CLOSE " Затваря прозореца."
END

View File

@@ -14,8 +14,8 @@ BEGIN
END
POPUP "Ansicht"
BEGIN
MENUITEM "Ger<EFBFBD>te nach Typ", IDC_DEVBYTYPE, CHECKED
MENUITEM "Ger<EFBFBD>te nach Verbindung", IDC_STATIC, GRAYED
MENUITEM "Geräte nach Typ", IDC_DEVBYTYPE, CHECKED
MENUITEM "Geräte nach Verbindung", IDC_STATIC, GRAYED
MENUITEM "Resourcen nach Typ", IDC_STATIC, GRAYED
MENUITEM "Resourcen nach Verbindung", IDC_STATIC, GRAYED
END
@@ -34,22 +34,22 @@ BEGIN
END
IDD_ABOUTBOX DIALOGEX 22,16,190,182
CAPTION "<EFBFBD>ber Ger<EFBFBD>te-Manager"
CAPTION "Über Geräte-Manager"
FONT 8,"MS Shell Dlg",0,0
STYLE DS_SHELLFONT | WS_BORDER | WS_DLGFRAME | WS_SYSMENU | DS_MODALFRAME
BEGIN
LTEXT "Ger<EFBFBD>te-Manager v0.1\nCopyright (C) 2006\nby Ged Murphy (gedmurphy@gmail.com)", IDC_STATIC, 48, 7, 130, 26
PUSHBUTTON "Schlie<EFBFBD>en", IDOK, 75, 162, 44, 15
LTEXT "Geräte-Manager v0.1\nCopyright (C) 2006\nby Ged Murphy (gedmurphy@gmail.com)", IDC_STATIC, 48, 7, 130, 26
PUSHBUTTON "Schließen", IDOK, 75, 162, 44, 15
ICON IDI_MAIN_ICON, IDC_STATIC, 10, 10, 7, 30
EDITTEXT IDC_LICENSE_EDIT, 8, 44, 174, 107, WS_VISIBLE | WS_VSCROLL | WS_TABSTOP | ES_READONLY | ES_MULTILINE
END
STRINGTABLE
STRINGTABLE DISCARDABLE
BEGIN
IDS_LICENSE "Dieses Programm ist kostenlos; Sie k<EFBFBD>nnen es frei verteilen mit od. ohne <EFBFBD>nderungen unter der GNU Lesser General Public License, wie es von der Free Software Foundation ver<EFBFBD>ffentlicht wurde; entweder Version 2.1 der Lizenz, oder eine sp<EFBFBD>tere Version (ihrer Wahl).\r\n\r\nThis program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.\r\n\r\nYou should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA."
IDS_LICENSE "Dieses Programm ist kostenlos; Sie können es frei verteilen mit od. ohne Änderungen unter der GNU Lesser General Public License, wie es von der Free Software Foundation veröffentlicht wurde; entweder Version 2.1 der Lizenz, oder eine spätere Version (ihrer Wahl).\r\n\r\nThis program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.\r\n\r\nYou should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA."
END
STRINGTABLE
STRINGTABLE DISCARDABLE
BEGIN
IDS_TOOLTIP_PROP "Eigenschaften"
IDS_TOOLTIP_REFRESH "Aktualisieren"
@@ -58,20 +58,20 @@ BEGIN
END
/* Hints */
STRINGTABLE
STRINGTABLE DISCARDABLE
BEGIN
IDS_APPNAME "ReactOS Ger<EFBFBD>te-Manager"
IDS_APPNAME "ReactOS Geräte-Manager"
IDS_HINT_BLANK " "
IDS_HINT_EXIT " Das Programm beenden."
IDS_HINT_REFRESH " Die Service-Liste aktualisieren."
IDS_HINT_PROP " Eigenschaften-Seite f<EFBFBD>r die aktuelle Auswahl anzeigen."
IDS_HINT_PROP " Eigenschaften-Seite für die aktuelle Auswahl anzeigen."
IDS_HINT_HELP " Hilfe-Fenster anzeigen."
IDS_HINT_ABOUT " <EFBFBD>ber ReactOS Ger<EFBFBD>te-Manager."
IDS_HINT_ABOUT " Über ReactOS Geräte-Manager."
IDS_HINT_SYS_RESTORE " Dieses Fenster auf normale Gr<EFBFBD><EFBFBD>e wiederherstellen."
IDS_HINT_SYS_RESTORE " Dieses Fenster auf normale Größe wiederherstellen."
IDS_HINT_SYS_MOVE " Dieses Fenster verschieben."
IDS_HINT_SYS_SIZE " Gr<EFBFBD><EFBFBD>e dieses Fensters <EFBFBD>ndern."
IDS_HINT_SYS_SIZE " Größe dieses Fensters ändern."
IDS_HINT_SYS_MINIMIZE " Dieses Fenster zu einem Symbol verkleinern."
IDS_HINT_SYS_MAXIMIZE " Dieses Fenster auf Bildschirmgr<EFBFBD><EFBFBD>e vergr<EFBFBD><EFBFBD>ern."
IDS_HINT_SYS_CLOSE " Dieses Fenster schlie<EFBFBD>en."
IDS_HINT_SYS_MAXIMIZE " Dieses Fenster auf Bildschirmgröße vergrößern."
IDS_HINT_SYS_CLOSE " Dieses Fenster schließen."
END

Some files were not shown because too many files have changed in this diff Show More