[x]
Posted via EE Mobile

Search, ask, and monitor your questions on the go with EE Mobile. Visit Experts Exchange from your mobile device and never be out of touch again.

Question
[x]
Attachment Details
[x]
The Solution Rating System

With so many solutions, how can you tell which solutions are most likely to help you and which ones are not? To provide you with a tool to use, we rate our solutions based on various elements that most accurately determine if a solution is a quality solution. To explain what factors affect the solution rating, here are the elements we take into consideration when formulating our solution rating.

  • The Grade of the Solution
  • The Zone Rank of the Expert Providing the Solution
  • The Number of Author and Expert Comments
  • The Number of Experts Contributing
  • The Feedback of the Community

Your Input Matters
Because of the way the system is set up, the most important variable in this equation is you. As a member of Experts Exchange, you are able to cast your vote on the quality of the solutions in regard to how complete, accurate, helpful and easy to understand each solution is. When you provide your feedback, each rating is adjusted accordingly. So, if you see a solution that has a poor rating that you think is a good solution, let us know by rating it. As you do, the rating will be adjusted and will become more accurate for other members of our site.

If you have any suggestions that you would like to make for our rating system, please ask a question in the Suggestions Zone of Community Support.

Thank you!

9.0

Help in conerting VB code to C#.net

Asked by johny_bravo1 in .NET Framework 3.x versions, .NET Framework 2.x, Microsoft Visual C#.Net

Tags: c#, Windows application, Visual studio

Hi Experts,
I am developing a windows application.After login,in mdi form i have two different tabs namely,'Switch' n 'Multisession'.
When the user click 'multisession' and then click 'Switch',he should be able to view a new instance of the form.It means he will be able to see two instaces of the application.
Maximum 2 instances can be run at a time.

I have the VB code to do this.Can you pls tell me how can I implement it in C#.
Should I need to change anything in this?
The below code is for both 'Switch' n 'Multisession'
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
120:
121:
122:
123:
124:
125:
126:
127:
128:
129:
130:
131:
132:
133:
134:
135:
136:
137:
138:
139:
140:
141:
142:
143:
144:
145:
146:
147:
148:
149:
150:
151:
152:
153:
154:
155:
156:
157:
158:
159:
160:
161:
162:
163:
164:
165:
166:
167:
168:
169:
170:
171:
172:
173:
174:
175:
176:
177:
178:
179:
180:
181:
182:
183:
184:
185:
186:
187:
188:
189:
190:
191:
192:
193:
194:
195:
196:
197:
198:
199:
200:
201:
202:
203:
204:
205:
206:
207:
208:
209:
210:
211:
212:
213:
214:
215:
216:
217:
218:
219:
220:
221:
222:
223:
224:
225:
226:
227:
228:
229:
230:
231:
232:
233:
234:
235:
236:
237:
238:
239:
240:
241:
242:
243:
244:
245:
246:
247:
248:
249:
250:
251:
252:
253:
254:
255:
256:
257:
258:
259:
260:
261:
262:
263:
264:
265:
266:
267:
268:
269:
270:
271:
272:
273:
274:
275:
276:
277:
278:
279:
280:
281:
282:
283:
284:
285:
286:
287:
288:
289:
290:
291:
292:
293:
294:
295:
296:
297:
298:
299:
300:
301:
302:
303:
304:
305:
306:
307:
308:
309:
310:
311:
312:
313:
314:
315:
316:
317:
318:
319:
320:
321:
322:
323:
324:
325:
326:
327:
328:
329:
330:
331:
332:
333:
334:
335:
336:
337:
338:
339:
340:
341:
342:
343:
344:
345:
346:
347:
348:
349:
350:
351:
352:
353:
354:
355:
356:
357:
358:
359:
360:
361:
362:
363:
364:
365:
366:
367:
368:
369:
370:
371:
372:
373:
374:
375:
376:
377:
378:
379:
380:
381:
382:
383:
384:
385:
386:
387:
388:
389:
390:
391:
392:
393:
394:
395:
396:
397:
398:
399:
400:
401:
402:
403:
404:
405:
406:
407:
408:
409:
410:
411:
412:
413:
414:
415:
416:
417:
418:
419:
420:
421:
422:
423:
424:
425:
426:
427:
428:
429:
430:
431:
432:
433:
434:
435:
436:
437:
438:
439:
440:
441:
442:
443:
444:
445:
446:
447:
448:
449:
450:
451:
452:
453:
454:
455:
456:
457:
458:
459:
460:
461:
462:
463:
464:
465:
466:
467:
468:
469:
470:
471:
472:
473:
474:
475:
476:
477:
478:
479:
480:
481:
482:
483:
484:
485:
486:
487:
488:
489:
490:
491:
492:
493:
494:
495:
496:
497:
498:
499:
500:
501:
502:
503:
504:
505:
506:
507:
508:
509:
510:
511:
512:
513:
514:
515:
516:
517:
518:
519:
520:
521:
522:
523:
524:
525:
526:
527:
528:
529:
530:
531:
532:
533:
534:
535:
536:
537:
538:
539:
540:
541:
542:
543:
544:
545:
546:
547:
548:
549:
550:
551:
552:
553:
554:
555:
556:
557:
558:
559:
560:
561:
Option Explicit
 
'
 
' Required Win32 API Declarations
 
'
 
' The AttachThreadInput function attaches the input processing
 
' mechanism of one thread to that of another thread.
 
' Windows created in different threads typically process input
 
' independently of each other - they have their own input states
 
' (focus, active, capture windows, key state, queue status, ...),
 
' and they are not synchronized with the input processing of other
 
' threads. By using the AttachThreadInput function, a thread can
 
' attach its input processing to another thread. This also allows
 
' threads to share their input states, so they can call the
 
' SetFocus function to set the keyboard focus to a window of a
 
' different thread. This also allows threads to get key-state
 
' information. These capabilities are not generally possible.
 
'
 
Declare Function AttachThreadInput Lib "user32" (ByVal idAttach As Long, ByVal idAttachTo As Long, ByVal fAttach As Long) As Long
 
Declare Function EnumWindows Lib "user32" (ByVal lpEnumFunc As Long, ByVal lParam As Long) As Long
 
Declare Function GetForegroundWindow Lib "user32" () As Long
 
Declare Function GetParent Lib "user32" (ByVal hWnd As Long) As Long
 
Declare Function GetWindow Lib "user32" (ByVal hWnd As Long, ByVal wCmd As Long) As Long
 
Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long) As Long
 
Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hWnd As Long, ByVal lpString As String, ByVal cch As Long) As Long
 
Declare Function GetWindowThreadProcessId Lib "user32" (ByVal hWnd As Long, lpdwProcessId As Long) As Long
 
Declare Function IsIconic Lib "user32" (ByVal hWnd As Long) As Long
 
Declare Function IsWindowVisible Lib "user32" (ByVal hWnd As Long) As Long
 
Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
 
Declare Function SetForegroundWindow Lib "user32" (ByVal hWnd As Long) As Long
 
Declare Function ShowWindow Lib "user32" (ByVal hWnd As Long, ByVal nCmdShow As Long) As Long
 
'
 
' Constants used with APIs
 
'
 
Public Const SW_SHOW = 5
 
Public Const SW_RESTORE = 9
 
Public Const GW_OWNER = 4
 
Public Const GWL_HWNDPARENT = (-8)
 
Public Const GWL_EXSTYLE = (-20)
 
Public Const WS_EX_TOOLWINDOW = &H80
 
Public Const WS_EX_APPWINDOW = &H40000
 
Public i As Integer
 
'
 
' Listbox messages
 
'
 
Public Const LB_ADDSTRING = &H180
 
Public Const LB_SETITEMDATA = &H19A
 
Enum MENUINFO_STYLES
 
    MNS_NOCHECK = &H80000000
 
    MNS_MODELESS = &H40000000
 
    MNS_DRAGDROP = &H20000000
 
    MNS_AUTODISMISS = &H10000000
 
    MNS_NOTIFYBYPOS = &H8000000
 
    MNS_CHECKORBMP = &H4000000
 
End Enum
 
 
 
 
 
Enum MENUINFO_MASKS
 
    MIM_MAXHEIGHT = &H1
 
    MIM_BACKGROUND = &H2
 
    MIM_HELPID = &H4
 
    MIM_MENUDATA = &H8
 
    MIM_STYLE = &H10
 
    MIM_APPLYTOSUBMENUS = &H80000000
 
End Enum
 
 
 
 
 
Public Type MENUINFO
 
    cbSize As Long
 
    fMask As MENUINFO_MASKS
 
    dwStyle As MENUINFO_STYLES
 
    cyMax As Long
 
    hbrBack As Long
 
    dwContextHelpID As Long
 
    dwMenuData As Long
 
End Type
 
 
 
 
 
Public Declare Function GetMenuInfo Lib "user32" ( _
 
    ByVal hMenu As Long, _
 
    mi As MENUINFO) As Long
 
 
 
 
 
Public Declare Function SetMenuInfo Lib "user32" ( _
 
    ByVal hMenu As Long, _
 
    mi As MENUINFO) As Long
 
 
 
 
 
Public Declare Function GetMenu Lib "user32" (ByVal hWnd As Long) As Long
 
 
 
 
 
Public Declare Function CreateSolidBrush Lib "gdi32" (ByVal crColor As Long) As Long
 
Public Declare Function StretchBlt Lib "gdi32" (ByVal hDC As Long, ByVal X As Long, ByVal Y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal nSrcWidth As Long, ByVal nSrcHeight As Long, ByVal dwRop As Long) As Long
 
Public Declare Function BitBlt Lib "gdi32" (ByVal hDestDC As Long, ByVal X As Long, ByVal Y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal dwRop As Long) As Long
 
Public Declare Function GetDesktopWindow Lib "user32" () As Long
 
Public Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
 
Public Declare Function GetDeviceCaps Lib "gdi32" (ByVal hDC As Long, ByVal nIndex As Long) As Long
 
Dim frmH As Long
 
Dim magnify As Integer
 
Public Const HORZRES = 8
 
Public Const VERTRES = 10
 
Public Const RDW_ERASE = &H4
 
Public Const RDW_INVALIDATE = &H1
 
Public Const SRCCOPY = &HCC0020
 
Public Const WM_PAINT = &HF
 
Public Type POINTAPI
 
X As Long
 
Y As Long
 
End Type
 
 
 
Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" ( _
 
    ByVal hWnd1 As Long, ByVal hWnd2 As Long, _
 
    ByVal lpsz1 As String, ByVal lpsz2 As String) As Long
 
Private Declare Function DeleteObject Lib "gdi32" (ByVal hObject As Long) As Long
 
Private Declare Function SetClassLong Lib "user32" Alias "SetClassLongA" ( _
 
                ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwnewlong As Long) As Long
 
Public Declare Function InvalidateRect Lib "user32" (ByVal hWnd As Long, lpRect As Long, ByVal bErase As Long) As Long
 
 
 
Public Declare Function CreatePatternBrush Lib "gdi32" (ByVal hBitmap As Long) As Long
 
 
 
Public Enum enuTBType
 
    enuTB_FLAT = 1
 
    enuTB_STANDARD = 2
 
End Enum
 
 
 
Private Const GCL_HBRBACKGROUND = (-10)
 
Public ArryListMuliSession() As Long
 
Public MultiSessionCount As Integer
 
Public ArrMultiSessionCount As Integer
 
 
 
Public Sub pSetForegroundWindow(ByVal hWnd As Long)
 
Dim lForeThreadID As Long
 
Dim lThisThreadID As Long
 
Dim lReturn       As Long
 
'
 
' Make a window, specified by its handle (hwnd)
 
' the foreground window.
 
'
 
' If it is already the foreground window, exit.
 
'
 
If hWnd <> GetForegroundWindow() Then
 
    '
 
    ' Get the threads for this window and the foreground window.
 
    '
 
    lForeThreadID = GetWindowThreadProcessId(GetForegroundWindow, ByVal 0&)
 
    lThisThreadID = GetWindowThreadProcessId(hWnd, ByVal 0&)
 
    '
 
    ' By sharing input state, threads share their concept of
 
    ' the active window.
 
    '
 
    If lForeThreadID <> lThisThreadID Then
 
        ' Attach the foreground thread to this window.
 
        Call AttachThreadInput(lForeThreadID, lThisThreadID, True)
 
        ' Make this window the foreground window.
 
        lReturn = SetForegroundWindow(hWnd)
 
        ' Detach the foreground window's thread from this window.
 
        Call AttachThreadInput(lForeThreadID, lThisThreadID, False)
 
    Else
 
       lReturn = SetForegroundWindow(hWnd)
 
    End If
 
    '
 
    ' Restore this window to its normal size.
 
    '
 
    If IsIconic(hWnd) Then
 
       Call ShowWindow(hWnd, SW_RESTORE)
 
    Else
 
       Call ShowWindow(hWnd, SW_SHOW)
 
    End If
 
End If
 
End Sub
 
 
 
Public Function fEnumWindows(lst As Object) As Long
 
'
 
' Clear list, then fill it with the running
 
' tasks. Return the number of tasks.
 
'
 
' The EnumWindows function enumerates all top-level windows
 
' on the screen by passing the handle of each window, in turn,
 
' to an application-defined callback function. EnumWindows
 
' continues until the last top-level window is enumerated or
 
' the callback function returns FALSE.
 
'
 
With lst
 
    .Clear
 
    Call EnumWindows(AddressOf fEnumWindowsCallBack, .hWnd)
 
    fEnumWindows = .ListCount
 
End With
 
End Function
 
Public Function fEnumWindowsa(lst As Object) As Long
 
 
 
'
 
' Clear list, then fill it with the running
 
' tasks. Return the number of tasks.
 
'
 
' The EnumWindows function enumerates all top-level windows
 
' on the screen by passing the handle of each window, in turn,
 
' to an application-defined callback function. EnumWindows
 
' continues until the last top-level window is enumerated or
 
' the callback function returns FALSE.
 
 
 
'
 
Dim hWnd As Long
 
'With lst
 
   
 
    Call EnumWindows(AddressOf fEnumWindowsCallBack, hWnd)
 
 '   fEnumWindowsa = i
 
'End With
 
End Function
 
 
 
 
 
Private Function fEnumWindowsCallBack(ByVal hWnd As Long, ByVal lParam As Long) As Long
 
Dim lReturn     As Long
 
Dim lExStyle    As Long
 
Dim bNoOwner    As Boolean
 
Dim sWindowText As String
 
'
 
' This callback function is called by Windows (from
 
' the EnumWindows API call) for EVERY window that exists.
 
' It populates the listbox with a list of windows that we
 
' are interested in.
 
'
 
' Windows to display are those that:
 
'   -   are not this app's
 
'   -   are visible
 
'   -   do not have a parent
 
'   -   have no owner and are not Tool windows OR
 
'       have an owner and are App windows
 
'
 
If hWnd <> MDI_ComStock.hWnd Then
 
    If IsWindowVisible(hWnd) Then
 
        If GetParent(hWnd) = 0 Then
 
            bNoOwner = (GetWindow(hWnd, GW_OWNER) = 0)
 
            lExStyle = GetWindowLong(hWnd, GWL_EXSTYLE)
 
            
 
            If (((lExStyle And WS_EX_TOOLWINDOW) = 0) And bNoOwner) Or _
 
                ((lExStyle And WS_EX_APPWINDOW) And Not bNoOwner) Then
 
                '
 
                ' Get the window's caption.
 
                '
 
                sWindowText = Space$(256)
 
                lReturn = GetWindowText(hWnd, sWindowText, Len(sWindowText))
 
                If lReturn Then
 
                   '
 
                   ' Add it to our list.
 
                   '
 
                   sWindowText = left$(sWindowText, lReturn)
 
                   lReturn = SendMessage(lParam, LB_ADDSTRING, 0, ByVal sWindowText)
 
                   If left(sWindowText, 5) = "Build" And ArrMultiSessionCount < 2 Then
 
                 '  ArryListMuliSession(0) = SendMessage(lParam, LB_SETITEMDATA, lReturn, ByVal hwnd)
 
                   ArryListMuliSession(ArrMultiSessionCount) = hWnd
 
                   ArrMultiSessionCount = ArrMultiSessionCount + 1
 
                   
 
                   End If
 
                   
 
                   'Call SendMessage(lParam, LB_SETITEMDATA, lReturn, ByVal hwnd)
 
                End If
 
            End If
 
        End If
 
    End If
 
End If
 
fEnumWindowsCallBack = True
 
End Function
 
Public Sub ChangeTBBack(TB As Object, PNewBack As Long, pType As enuTBType)
 
Dim lTBWnd      As Long
 
    Select Case pType
 
        Case enuTB_FLAT     'FLAT Button Style Toolbar
 
            'Apply directly to TB Hwnd
 
            DeleteObject SetClassLong(TB.hWnd, GCL_HBRBACKGROUND, PNewBack)
 
        Case enuTB_STANDARD 'STANDARD Button Style Toolbar
 
            lTBWnd = FindWindowEx(TB.hWnd, 0, "msvb_lib_toolbar", vbNullString) 'Find Hwnd first
 
            DeleteObject SetClassLong(lTBWnd, GCL_HBRBACKGROUND, PNewBack)      'Set new Back
 
    End Select
 
End Sub
 
Public Sub pGetTasks()
 
Dim Arr As New Collection
 
Dim Arr1() As String
 
'
 
'Call fEnumWindows(lstTasks)
 
ReDim ArryListMuliSession(1)
 
Call fEnumWindowsa(Arr)
 
On Error Resume Next
 
End Sub
[+][-]04/27/09 12:13 AM, ID: 24239412Accepted Solution

View this solution now by starting your 30-day free trial. Setting up your free trial is quick, easy, and secure. We will return you to this solution, unlocked, when you're done.

About this solution

Zones: .NET Framework 3.x versions, .NET Framework 2.x, Microsoft Visual C#.Net
Tags: c#, Windows application, Visual studio
Sign Up Now!
Solution Provided By: Idle_Mind
Participating Experts: 2
Solution Grade: A
 
[+][-]04/26/09 10:36 PM, ID: 24239081Expert Comment

At Experts Exchange, members can ask their questions to thousands of technology professionals, also known as Experts. Experts compete and collaborate to answer those questions by leaving comments like this one.

Start your 30-day free trial to view this Expert Comment or ask the Experts your question.

 
[+][-]04/26/09 10:39 PM, ID: 24239091Author Comment

Often, when Experts are collaborating with members who have asked questions, they will request additional information about the problem. Askers respond with an author comment like this one.

Start your 30-day free trial to view this Author Comment or ask the Experts your question.

 
[+][-]04/26/09 10:54 PM, ID: 24239145Author Comment

Often, when Experts are collaborating with members who have asked questions, they will request additional information about the problem. Askers respond with an author comment like this one.

Start your 30-day free trial to view this Author Comment or ask the Experts your question.

 
[+][-]04/27/09 12:23 AM, ID: 24239446Author Comment

Often, when Experts are collaborating with members who have asked questions, they will request additional information about the problem. Askers respond with an author comment like this one.

Start your 30-day free trial to view this Author Comment or ask the Experts your question.

 
[+][-]04/27/09 12:30 AM, ID: 24239472Author Comment

Often, when Experts are collaborating with members who have asked questions, they will request additional information about the problem. Askers respond with an author comment like this one.

Start your 30-day free trial to view this Author Comment or ask the Experts your question.

 
[+][-]04/27/09 01:06 AM, ID: 24239626Author Comment

Often, when Experts are collaborating with members who have asked questions, they will request additional information about the problem. Askers respond with an author comment like this one.

Start your 30-day free trial to view this Author Comment or ask the Experts your question.

 
[+][-]04/27/09 01:51 AM, ID: 24239834Author Comment

Often, when Experts are collaborating with members who have asked questions, they will request additional information about the problem. Askers respond with an author comment like this one.

Start your 30-day free trial to view this Author Comment or ask the Experts your question.

 
 
Loading Advertisement...
20091111-EE-VQP-92 - Hierarchy / EE_QW_3_20080625