PDA

View Full Version : سوال در مورد environ



gachboy
پنج شنبه 21 آذر 1392, 10:35 صبح
سلام
در برنامم می خوام اگر مسیر برنامم با مسیر temp یکی بود بک گروند برنامم قرمز بشه که با کد زیر این کار میکنم :
if app.path=environ("temp") then form1.backcolor=vbred
اما اگرهم برنامم داخل temp باشه بک گروند قرمز نمیشه چون مسیری که environ میده با مسیری که app.path میده یکی نیست!
به نظرتون باید چکار کنم؟

محسن واژدی
پنج شنبه 21 آذر 1392, 10:45 صبح
سلام علیکم
چک کنید Appearance فرم بر روی Flat نباشد، اگه بود 3D را انتخاب کنید

موفق باشید

gachboy
پنج شنبه 21 آذر 1392, 13:08 عصر
مشکل از فرم نیست! مشکل از ادرس هاییه که میدن مثلا :
app.patch ادرس C:\Documents and Settings\Olive\Desktop میده ولی environ"temp" ادرس C:\DOCUME~1\Olive\LOCALS~1\Temp میده!
این دوتا ادرس هم با هم فرق داره!
می خوام تست کنم اگه برنامم داخل temp بود بک گروند قرمز بشه ولی دوتا ادرس بالایی با هم فرق دارن!

gachboy
پنج شنبه 21 آذر 1392, 13:44 عصر
ببخشید app.path ادرس زیر میده :

C:\Documents and Settings\Olive\Local Settings\Temp
ولی environ ادرس زیر :

C:\DOCUME~1\Olive\LOCALS~1\Temp

محسن واژدی
پنج شنبه 21 آذر 1392, 13:44 عصر
مشکل از فرم نیست! مشکل از ادرس هاییه که میدن مثلا:
app.patch ادرس C:\Documents and Settings\Olive\Desktop میده ولی environ"temp" ادرس C:\DOCUME~1\Olive\LOCALS~1\Temp میده!
این دوتا ادرس هم با هم فرق داره!
می خوام تست کنم اگه برنامم داخل temp بود بک گروند قرمز بشه ولی دوتا ادرس بالایی با هم فرق دارن!

به دو روش میتونید این مشکل برطرف کنید، یکی یا آدرس Temp را از حالت کوتاه شده خارج کنید یا آدرس برنامه را کوتاه کنید، کد زیر آدرس برنامه را کوتاه کرده است،:
Private Declare Function GetShortPathName Lib "kernel32" Alias "GetShortPathNameA" (ByVal lpszLongPath As String, ByVal lpszShortPath As String, ByVal cchBuffer As Long) As Long

Public Function GetShortName(sFile As String) As String
On Error Resume Next
Dim sShortFile As String * 255
Dim lResult As Long
lResult = GetShortPathName(sFile, sShortFile, Len(sShortFile))
GetShortName = Left$(sShortFile, lResult)
End Function

Private Sub Command1_Click()
If Environ("tmp") = GetShortName(App.Path) Then MsgBox "OK..", vbInformation
End Sub

موفق باشید

gachboy
پنج شنبه 21 آذر 1392, 13:46 عصر
تابع GetShortPathName از توابع api؟؟
انتی ویروس بهش گیر نمیده؟؟

محسن واژدی
پنج شنبه 21 آذر 1392, 13:51 عصر
تابع GetShortPathName از توابع api؟؟
انتی ویروس بهش گیر نمیده؟؟
GetShortPathNameاز توابع ذاتی ویندوزه، دلیلی نداره آنتی ویروس ممانعت کنه!!