Launching 64bit process from 32bit process using CreateProcess in C# .Net

Sunday, May 20, 2012

I was required to execute a Java applet from within a C# application. It kept failing until I found out that it needed 3GB of RAM and the process was 32 bit by default. I then set the .Net process to build specifically as 64 bit.Now I needed to use a 32 bit dll, so I had to use a 32 bit process. The solution is to use the explicit path c:\Windows\Sysnative, so for example the command line "Java -d64 -cp" would be "c:\Windows\Sysnative\Java.exe -d64 -cp", and "cmd.exe" would be "c:\Windows\Sysnative\cmd.exe". You can see on the task manager that...
tags: ,
no comments

פיתוח אלגוריתמים

Sunday, March 11, 2012

בפוסט קודם דיברתי על מתכנתי אמבדד ופיתוח דרייברים. בסוף הפוסט הזכרתי אלגוריתמיקה כהיתרון התחרותי וההגנה הטובה ביותר מפני העתקה. אם יש לך אלגוריתם ייחודי לא צריך פטנט. הרי בכל מקרה פטנט צריך לרשום בהרבה מקומות בעולם, ויש מדינות חשובות שלא ממש יתיחסו אליו (מזרח). בנוסף חברה שאין לה משאבים אינסופיים כנראה לא תצליח להתמודד בבתי משפט מול חברות ענק על מנת להגן על הפטנטים שלה. הפתרון הוא אלגוריתם. אלגוריתם הוא בעצם תכנון קוד. לא משנה באיזו שפה הוא כתוב ולא צריך להוכיח שהמצאת משהו חדש. מה שחשוב הוא הידע איך לגרום למחשב לקחת מידע מסויים ולחלץ או לחשב מידע אחר, למשל...

המרחק בין מתכנת למתכנת אמבדד

Wednesday, February 29, 2012

קודם כל חשוב לומר שאין קשר לסביבת הפיתוח, לתשתיות, לאוסף הכלים וה- API. שום קשר. בעולם מיקרוסופט יש לנו מספר מערכות הפעלה שונות שעליהן מפתחים, לרוב בעזרת Visual Studio: 1. Win32 API, User-Mode, C\++, C#, MFC, Java, וכד' 2. שרתים, Asp.Net, HPC, וכד' 3. Windows CE 4. Windows NT Kernel 5. WebBrowser, JavaScript, AJAX, וכד' למי ששואל את עצמו, הגרסאות השונות של Windows Embedded הן בעצם דרך לבנות Desktop או Server. יש בישראל הרבה מתכנתים מכל הסוגים שהזכרתי. בדרך כלל יהיה קל יותר למתכנת מקבוצה מסויימת לפתח שיחה עם מתכנת מאותה הקבוצה. מדובר בקהילה ובתרבות וכנראה שדווקא זה כן קשור לסביבת העבודה ואופי המוצרים. מי שמכיר אותי יודע...

סדרת הרצאות מצולמות בנושא מחשוב מקבילי בחסות אינטל

Thursday, February 23, 2012

מדובר בשישה פרקים באורכים משתנים, כולם באנגלית, שצולמו לפני מספר חודשים וישוחררו לצפיה כל מספר שבועות. הסדרה מתחילה בבסיס של מחשוב מקבילי ומסבירה למה מחשוב מקבילי ממש קל, וממשיכה דרך ארכיטקטורה ומודלים, ועד טכנולוגיות מתקדמות דוגמת AVX (יכולת DSP של X86). הוידאו הראשון יפורסם בימים הקרובים באתר של אינטל העולמית. למידע נוסף: http://software.intel.com/en-us/blogs/2012/02/23/pre-release-parallel-programming-and-architecture-video-series/ אסף

השב"כ מחפש מומחה ארכיטקטורת פיתוח

Friday, September 23, 2011

השב"כ מחפש מומחה ארכיטקטורת פיתוח וזה נשמע לי תפקיד מפתה ויוקרתי מאד. אני מפרסם את זה בין השאר כי לא נפתחות הרבה משרות לארכיטקטים. קישור למודעה: https://www.shabak.gov.il/jobs/alljobs/computres/Pages/129.aspx אפשר לשלוח קו"ח גם אל: it.shabak@gmail.com בהצלחה, אסף  
tags: , , ,
no comments

C# Library Version

Tuesday, May 24, 2011

Colleting this from different sources. Looking for a library version similar to __DATE__ __TIME__ you need to use:System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.ToString() For this to change every build you need to go to project properties, 'Application' tab, open 'Assembly Information', and set the last value in 'Assembly Version' to * so instead of Assembly Version of 1.0.0.0 it should be 1.0.0.* ; This will cause an increment for every build (to verify modify code or rebuild).
tags: ,
no comments

C# Convert Generic Type

Sunday, April 3, 2011

I am posting this because I didn't see a simple solution on the first few hits when searching the net. If you have a generic class of type T and you want to use it with basic types such as int, long, etc. You can use the following method to do the casting: class myClass<T>{   private int myVal;   public T Get()   {      return ((T)(Convert.ChangeType(myVal, typeof(T))));   }} enum SomeEnum { One = 1, Two = 3 }myClass<SomeEnum> X;SomeEnum se = X.Get(); You can also use: (TYPE)(retval as IConvertible).ToType(typeof( .... This is relevant because native types require casting and you cannot use the 'as' keyword. (for search engines:...
tags: ,
no comments

Exception by target of an invocation

Thursday, April 1, 2010

Parallel Programming means that we use invocations more often than we did before. Visual Studio 2008 debugger will bring you to the correct line if you get an exception, but if you invoke a method within your own code the debugger will show you the location in your own thread, which means the line that invoked the code that eventually threw an exception. The exception would say "Exception has been thrown by the target of an invocation.". To solve this and really find the location of your exception you can drill down into the inner-exception member of the exception or...

C# Activate Previous Application Instance

Tuesday, March 9, 2010

Continuing the following post and as an answer to Jasper: http://blogs.microsoft.co.il/blogs/asafshelly/archive/2010/03/02/c-close-previous-application-instance.aspx   The following code will make sure that only one instance is running by exiting if an instance is already running, and activating that instance. static extern bool SetForegroundWindow(IntPtr hWnd);static bool ActivateApplicationAlreadyRunning(){   string proc = Process.GetCurrentProcess().ProcessName;   Process processes = Process.GetProcessesByName(proc);   if (processes.Length < 2) return (false);   foreach (Process process in processes)   {      if (process.Id != Process.GetCurrentProcess().Id)      {         SetForegroundWindow(process.MainWindowHandle);         return (true);      }   }   return false;}   static void Main(){   if (ActivateApplicationAlreadyRunning()) return; .....
tags: ,
2 comments