-------------------------------------------------------------------------------------------------- [BUG/PRB.] VFP 9.0 FIX - MAKE THE PROJECT MANAGER WINDOW VISIBLE WHEN BUILDING A PROJECT January 2024 -------------------------------------------------------------------------------------------------- CCB 1. BUG: In vfp9 (and vfp6, vfp7, vfp8), sometimes the Project Manager window becomes visible. For example, run the following code in vfp5, BUILD EXE testproject.exe FROM testproject.pjx and then run the following code in vfp9: MODIFY PROJECT testproject.pjx NOSHOW _VFP.ACTIVEPROJECT.BUILD("testproject.exe",3) the Project Manager window becomes visible. The bug only occurs when there are some database files in the project file and the database files are compiled with different versions of FoxPro. The bug was reported by Doug Hennig. 2. CAUSE: In vfp9 (and vfp6, vfp7, vfp8), when we run the code: MODIFY PROJECT testproject.pjx NOSHOW _VFP.ACTIVEPROJECT.BUILD("testproject.exe",3) if there are some database files in the project file, it will run the COMPILE DATABASE command, if the database files are compiled with different versions of FoxPro, the Project Manager becomes visible. There is a field objrev (Object Revision) in a project file, it saves the Visual FoxPro object file version information, please refer to: ---------------------------------------------------------------------------------------------- | Object Revision Stamp | Visual FoxPro Object File Version Information | ---------------------------------------------------------------------------------------------- | 0x21B (539) | The object file is compiled with Visual FoxPro 3.0 | | 0x21F (543) | The object file is compiled with Visual FoxPro 5.0 | | 0x220 (544) | The object file is compiled with Visual FoxPro 6.0, 7.0, 8.0, 9.0 | | 0x221 (545) | The object file is compiled with Visual FoxPro X(10?) | | 0x222 (546) | The object file is compiled with Visual FoxPro Advanced | ---------------------------------------------------------------------------------------------- 3. RESOLUTION: We can write some code to fix the BUG. Fun6f4e8b :: ; proc near push ebp ;0x006f4e8b : 55 lea ebp , dword ptr [ esp + 0FFFFFEF4h ] ;0x006f4e8c : 8dac24f4feffff sub esp , 0198h ;0x006f4e93 : 81ec98010000 mov eax , dword ptr [ Data937090 ] ;0x006f4e99 : a190709300 push ebx ;0x006f4e9e : 53 push esi ;0x006f4e9f : 56 mov dword ptr [ ebp + 0108h ] , eax ;0x006f4ea0 : 898508010000 movzx eax ,byte ptr [ Data947420 ] ;0x006f4ea6 : 0fb60520749400 push edi ;0x006f4ead : 57 push dword ptr [ ebp + 0114h ] ;0x006f4eae : ffb514010000 mov dword ptr [ ebp - 16 ] , eax ;0x006f4eb4 : 8945f0 call Fun6d38bc ;0x006f4eb7 : e800eafdff xor ebx , ebx ;0x006f4ebc : 33db mov esi , eax ;0x006f4ebe : 8bf0 mov eax , dword ptr [ ebp + 011Ch ] ;0x006f4ec0 : 8b851c010000 inc ebx ;0x006f4ec6 : 43 test esi , esi ;0x006f4ec7 : 85f6 mov dword ptr [ Data94663c ] , eax ;0x006f4ec9 : a33c669400 jne Label6f4fc2 ;0x006f4ece : 0f85ee000000 and dword ptr [ ebp - 28 ] , esi ;0x006f4ed4 : 2175e4 pushd 018h ;0x006f4ed7 : 6a18 pop ecx ;0x006f4ed9 : 59 xor eax , eax ;0x006f4eda : 33c0 lea edi , dword ptr [ ebp + 0FFFFFF78h ] ;0x006f4edc : 8dbd78ffffff rep stosd ;0x006f4ee2 : f3ab mov eax , dword ptr [ ebp + 0114h ] ;0x006f4ee4 : 8b8514010000 lea ecx , dword ptr [ ebp - 8 ] ;0x006f4eea : 8d4df8 push ecx ;0x006f4eed : 51 push eax ;0x006f4eee : 50 mov dword ptr [ ebp + 0FFFFFF78h ] , offset Fun7009cf ;0x006f4eef : c78578ffffffcf097000 mov dword ptr [ ebp - 120 ] , offset Label6fbaa8 ;0x006f4ef9 : c74588a8ba6f00 mov dword ptr [ ebp - 104 ] , offset Label6fcc1b ;0x006f4f00 : c745981bcc6f00 mov dword ptr [ ebp - 88 ] , offset Label6fde6a ;0x006f4f07 : c745a86ade6f00 mov dword ptr [ ebp - 72 ] , offset Label6fee03 ;0x006f4f0e : c745b803ee6f00 mov dword ptr [ ebp - 56 ] , offset Label6ffc72 ;0x006f4f15 : c745c872fc6f00 mov dword ptr [ ebp + 0FFFFFF7Ch ] , ebx ;0x006f4f1c : 899d7cffffff mov dword ptr [ ebp - 116 ] , ebx ;0x006f4f22 : 895d8c mov dword ptr [ ebp - 100 ] , ebx ;0x006f4f25 : 895d9c mov dword ptr [ ebp - 84 ] , ebx ;0x006f4f28 : 895dac mov dword ptr [ ebp - 68 ] , ebx ;0x006f4f2b : 895dbc mov dword ptr [ ebp - 52 ] , ebx ;0x006f4f2e : 895dcc mov dword ptr [ ebp - 128 ] , ebx ;0x006f4f31 : 895d80 mov dword ptr [ ebp - 112 ] , ebx ;0x006f4f34 : 895d90 mov dword ptr [ ebp - 96 ] , ebx ;0x006f4f37 : 895da0 mov dword ptr [ ebp - 80 ] , ebx ;0x006f4f3a : 895db0 mov dword ptr [ ebp - 64 ] , ebx ;0x006f4f3d : 895dc0 mov dword ptr [ ebp - 48 ] , ebx ;0x006f4f40 : 895dd0 mov dword ptr [ ebp - 124 ] , ebx ;0x006f4f43 : 895d84 mov dword ptr [ ebp - 108 ] , ebx ;0x006f4f46 : 895d94 mov dword ptr [ ebp - 92 ] , ebx ;0x006f4f49 : 895da4 mov dword ptr [ ebp - 76 ] , ebx ;0x006f4f4c : 895db4 mov dword ptr [ ebp - 60 ] , ebx ;0x006f4f4f : 895dc4 mov dword ptr [ ebp - 44 ] , ebx ;0x006f4f52 : 895dd4 mov dword ptr [ ebp - 40 ] , 0104Dh ;0x006f4f55 : c745d84d100000 mov dword ptr [ ebp - 36 ] , 0D103h ;0x006f4f5c : c745dc03d10000 mov dword ptr [ ebp - 32 ] , eax ;0x006f4f63 : 8945e0 mov dword ptr [ ebp - 24 ] , offset Fun6f3c04 ;0x006f4f66 : c745e8043c6f00 mov dword ptr [ ebp - 20 ] , offset Fun6f2194 ;0x006f4f6d : c745ec94216f00 call Fun4fd947 ;0x006f4f74 : e8ce89e0ff cmp dword ptr [ ebp + 0120h ] , esi ;0x006f4f79 : 39b520010000 push dword ptr [ ebp + 011Ch ] ;0x006f4f7f : ffb51c010000 setne al ;0x006f4f85 : 0f95c0 dec al ;0x006f4f88 : fec8 and eax , dword ptr [ Data947420 ] ;0x006f4f8a : 230520749400 mov byte ptr [ Data947420 ] , al ;0x006f4f90 : a220749400 lea eax , dword ptr [ ebp - 8 ] ;0x006f4f95 : 8d45f8 push eax ;0x006f4f98 : 50 pushd 06h ;0x006f4f99 : 6a06 lea eax , dword ptr [ ebp + 0FFFFFF78h ] ;0x006f4f9b : 8d8578ffffff push eax ;0x006f4fa1 : 50 lea eax , dword ptr [ ebp - 40 ] ;0x006f4fa2 : 8d45d8 push eax ;0x006f4fa5 : 50 call Fun6d330d ;0x006f4fa6 : e862e3fdff mov esi , eax ;0x006f4fab : 8bf0 test esi , esi ;0x006f4fad : 85f6 mov al , byte ptr [ ebp - 16 ] ;0x006f4faf : 8a45f0 mov byte ptr [ Data947420 ] , al ;0x006f4fb2 : a220749400 je Label6f509a ;0x006f4fb7 : 0f84dd000000 call Fun6eef80 ;0x006f4fbd : e8be9fffff Label6f4fc2 :: call Fun6f4d9c ;0x006f4fc2 : e8d5fdffff mov edi , esi ;0x006f4fc7 : 8bfe call Fun6f4b8f ;0x006f4fc9 : e8c1fbffff call Fun6f4d45 ;0x006f4fce : e872fdffff mov ecx , esi ;0x006f4fd3 : 8bce call Fun700dd9 ;0x006f4fd5 : e8ffbd0000 xor edi , edi ;0x006f4fda : 33ff cmp dword ptr [ ebp + 011Ch ] , edi ;0x006f4fdc : 39bd1c010000 jne Label6f4ff2 ;0x006f4fe2 : 750e push edi ;0x006f4fe4 : 57 mov eax , esi ;0x006f4fe5 : 8bc6 call Fun6d3850 ;0x006f4fe7 : e864e8fdff mov dword ptr [ ebp + 011Ch ] , eax ;0x006f4fec : 89851c010000 Label6f4ff2 :: lea eax , dword ptr [ ebp - 12 ] ;0x006f4ff2 : 8d45f4 push eax ;0x006f4ff5 : 50 push dword ptr [ ebp + 011Ch ] ;0x006f4ff6 : ffb51c010000 mov eax , dword ptr [esi] ;0x006f4ffc : 8b06 mov ecx , dword ptr [ eax + 4 ] ;0x006f4ffe : 8b4804 pushd 04h ;0x006f5001 : 6a04 pop edx ;0x006f5003 : 5a call Fun4817c4 ;0x006f5004 : e8bbc7d8ff mov edx , dword ptr [ ebp - 12 ] ;0x006f5009 : 8b55f4 cmp edx , edi ;0x006f500c : 3bd7 je Label6f501d ;0x006f500e : 740d mov eax , dword ptr [ ebp + 011Ch ] ;0x006f5010 : 8b851c010000 mov ecx , esi ;0x006f5016 : 8bce call Fun6f4dc3 ;0x006f5018 : e8a6fdffff Label6f501d :: cmp dword ptr [ ebp + 0118h ] , 03h ;0x006f501d : 83bd1801000003 je Label6f5042 ;0x006f5024 : 741c cmp dword ptr [ ebp + 0118h ] , ebx ;0x006f5026 : 399d18010000 jne Label6f5035 ;0x006f502c : 7507 ; ; --------------------------------------------------------------------------------------- ; VFP 9.0 FIX - MAKE THE PROJECT MANAGER WINDOW VISIBLE WHEN BUILDING A PROJECT ; April 2021 ; --------------------------------------------------------------------------------------- ; CCB ; ; Make the Project Manager window visible when building a project. ; ; 2021/4/27, by ccb ; cmp dword ptr vfpa_sys9060_data,00h jne Label6f502e cmp dword ptr [ esp + 01A8h ] , offset Label5b4a40 ;; Fun4b985f .. ; proc near jne Label6f502e cmp dword ptr [ esp + 01A8h +(4+14h+6Ch) ] , offset Label829807 ;; Fun82978f .. ; proc near jne Label6f502e cmp dword ptr [ esp + 01A8h +(4+14h+6Ch) + (4+00h+04B4h) ] , offset Label8298f1 ;; Fun829827 .. ; proc near jne Label6f502e jmp Label6f5033 Label6f502e :: call Fun6d379a ;0x006f502e : e867e7fdff Label6f5033 :: jmp Label6f5042 ;0x006f5033 : eb0d Label6f5035 :: cmp dword ptr [ ebp + 0118h ] , edi ;0x006f5035 : 39bd18010000 jne Label6f5042 ;0x006f503b : 7505 call Fun6d37b5 ;0x006f503d : e873e7fdff Label6f5042 :: call Fun6d37e7 ;0x006f5042 : e8a0e7fdff mov edi , esi ;0x006f5047 : 8bfe call Fun6d380e ;0x006f5049 : e8c0e7fdff pushd 0FFFFFFFFh ;0x006f504e : 6aff mov ebx , esi ;0x006f5050 : 8bde call Fun6f4912 ;0x006f5052 : e8bbf8ffff call Fun6f4b31 ;0x006f5057 : e8d5faffff push dword ptr [ ebp + 0124h ] ;0x006f505c : ffb524010000 push dword ptr [ ebp + 0120h ] ;0x006f5062 : ffb520010000 call Fun6f4e12 ;0x006f5068 : e8a5fdffff mov eax , dword ptr [ ebp + 0114h ] ;0x006f506d : 8b8514010000 test eax , eax ;0x006f5073 : 85c0 je Label6f50b4 ;0x006f5075 : 743d test byte ptr [ eax + 16 ] , 020h ;0x006f5077 : f6401020 je Label6f50b4 ;0x006f507b : 7437 mov eax , esi ;0x006f507d : 8bc6 call Fun6d39cb ;0x006f507f : e847e9fdff test eax , eax ;0x006f5084 : 85c0 je Label6f509a ;0x006f5086 : 7412 mov ecx , esi ;0x006f5088 : 8bce call Fun6d3950 ;0x006f508a : e8c1e8fdff mov edi , eax ;0x006f508f : 8bf8 mov ax , 02h ;0x006f5091 : 66b80200 call Fun8ec9b0 ;0x006f5095 : e816791f00 Label6f509a :: mov eax , esi ;0x006f509a : 8bc6 Label6f509c :: mov ecx , dword ptr [ ebp + 0108h ] ;0x006f509c : 8b8d08010000 call Fun42bf1d ;0x006f50a2 : e8766ed3ff pop edi ;0x006f50a7 : 5f pop esi ;0x006f50a8 : 5e pop ebx ;0x006f50a9 : 5b add ebp , 010Ch ;0x006f50aa : 81c50c010000 leave ;0x006f50b0 : c9 ret 014h ;0x006f50b1 : c21400 4. APPLIES TO: VFP 6.0.8167.0 VFP 6.0.8961.0 (SP5) VFP 7.0.0.9262 VFP 7.0.0.9465 (SP1) VFP 8.0.0.2521 VFP 8.0.0.3117 (SP1) VFP 9.0.0.2412 VFP 9.0.0.3504 (SP1) VFP 9.0.0.4611 (SP2) VFP 9.0.0.5015 (SP2) VFP 9.0.0.5411 (SP2) VFP 9.0.0.5721 (SP2) VFP 9.0.0.5815 (SP2) VFP 9.0.0.6303 (SP2) VFP 9.0.0.6602 (SP2) VFP 9.0.0.7423 (SP2) The bug has been fixed in VFP Advanced. 5. REFERENCE WEBSITES: 1, baiyujia.com: http://www.baiyujia.com http://www.baiyujia.com/vfpdocuments/f_vfp9fix171.asp http://www.baiyujia.com/vfpdocuments/f_vfp9fix118.asp http://www.baiyujia.com/vfpdocuments/f_vfp9fix119.asp http://www.baiyujia.com/vfpdocuments/f_vhfox.asp 2, rickschummer.com: http://rickschummer.com/articles/projfile.htm 6. OTHER: For reference only, there is no guarantees. Any questions or suggestions, please send me an email at ccb2000@163.com. |