منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب
طريقة جعل برنامجك default لأحد الأمتدادات - نسخة قابلة للطباعة

+- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb)
+-- قسم : قسم لغة الفيجوال بيسك VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=182)
+--- قسم : قسم اسئلة VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=183)
+--- الموضوع : طريقة جعل برنامجك default لأحد الأمتدادات (/showthread.php?tid=10198)

الصفحات: 1 2


طريقة جعل برنامجك default لأحد الأمتدادات - boty - 23-08-13

أهلا اصدقائي كيف الحال اليوم :o
أريد خدمة صغيرة
لدي مثلا برنامج صغير لا يحتوي الا على rich box
كيف اجعل برنامجي بديلا عن النوتباد بحيث عند النقر مرتين على اي ملف له امتداد txt يفتح تلقائيا برنامجي و يذكر ما كتب في rich box
و انا اعرف الكود لكي نجعله يفتح عن طريق open file dialog من داخل البرنامج

لكنه اريده ان يفتح كانوت باد حتى و ان كان البرنامج مغلقا Smile
ما الحل ؟


طريقة جعل برنامجك default لأحد الأمتدادات - AHMED HUSSIEN - 23-08-13

PHP كود :
Public Sub NewFileType(ByRef ProgramPath As StringByVal Extension As StringByRef FileIcon As StringByRef Description As String)
        
Dim W As Object
        Dim E 
As String
        W 
CreateObject("Wscript.shell")
        If 
VB.Left(Extension1) <> "." Then
            E 
"." Extension "\"
        Else
            E = Extension & "
\"
            Extension = Mid(Extension, 2)
        End If
        W.regwrite("
HKCR\" & E, Extension & " File")
        W.regwrite("
HKCR\" & Extension & " File\", Description)
        W.regwrite("
HKCR\" & Extension & " File\DefaultIcon\", FileIcon)
        W.regwrite("
HKCR\" & Extension & " File\Shell\Open\Command\", ProgramPath & " %1")
        W.regwrite("
HKCR\" & Extension & " File\Shell\", "Open")
    End Sub 

الأستخدام :
PHP كود :
NewFileType(Application.ExecutablePath"txt""G:\Icon_96.ico""Notepad Files"

يجب عمل ما فى الصورة كى يعمل الكود



طريقة جعل برنامجك default لأحد الأمتدادات - AHMED HUSSIEN - 23-08-13

نسيت لقراءة الملف ضع الكود التالى فى Form_Load
PHP كود :
If Trim(VB.Command()) <> "" Then
            
If Dir(Trim(VB.Command())) <> "" Then
                
Try
                    
RichTextBox1.LoadFile(Trim(VB.Command()))
                Catch 
ex As Exception
                    
Try
                        
RichTextBox1.LoadFile(Trim(VB.Command()))
                    Catch 
eh As Exception
                        Me
.RichTextBox1.Text My.Computer.FileSystem.ReadAllText(Trim(VB.Command()))
                    
End Try
                
End Try
            
End If
        
End If 



طريقة جعل برنامجك default لأحد الأمتدادات - boty - 23-08-13

شكرا اخي جاري التجربة


طريقة جعل برنامجك default لأحد الأمتدادات - boty - 23-08-13

ahmed hussien كتب :
PHP كود :
public sub newfiletype(byref programpath as stringbyval extension as stringbyref fileicon as stringbyref description as string)
        
dim w as object
        dim e 
as string
        w 
createobject("wscript.shell")
        if 
vb.left(extension1) <> "." then
            e 
"." extension "\"
        else
            e = extension & "
\"
            extension = mid(extension, 2)
        end if
        w.regwrite("
hkcr\" & e, extension & " file")
        w.regwrite("
hkcr\" & extension & " file\", description)
        w.regwrite("
hkcr\" & extension & " file\defaulticon\", fileicon)
        w.regwrite("
hkcr\" & extension & " file\shell\open\command\", programpath & " %1")
        w.regwrite("
hkcr\" & extension & " file\shell\", "open")
    end sub 

الأستخدام :
PHP كود :
newfiletype(application.executablepath"txt""g:\icon_96.ico""notepad files"

يجب عمل ما فى الصورة كى يعمل الكود

هناك خطأ في هذا الكود ارجو لحل
إقتباس :if vb.left(extension, 1) <> "." then

يقول ان هناك خطا في vb


طريقة جعل برنامجك default لأحد الأمتدادات - AHMED HUSSIEN - 23-08-13

اسف نسيت
ضع هذا السطر فى الأعلى (اول سطر)

Imports VB = Microsoft.VisualBasic


طريقة جعل برنامجك default لأحد الأمتدادات - boty - 23-08-13

الصراحة اخي انا مش فاهم حاجة نهااااائي

و البرنمج فتح و قفل و عمل العجايب O.o


طريقة جعل برنامجك default لأحد الأمتدادات - AHMED HUSSIEN - 23-08-13

تم حل المشكلة وتم تجربة الكود

PHP كود :
Imports Microsoft.Win32

Public Class Form1
    Dim p 
As String ""

    
Private Sub Form1_FormClosed(sender As ObjectAs FormClosedEventArgsHandles Me.FormClosed
        
If <> "" Then
            RichTextBox1
.SaveFile(p)
        
End If
    
End Sub

    
Private Sub Form1_Load(sender As ObjectAs EventArgsHandles MyBase.Load
        Dim r 
As RegistryKey Registry.ClassesRoot.OpenSubKey("\txtFile\Shell\Open\Command"True)
        
r.SetValue(NothingApplication.ExecutablePath " %1")
        If 
Trim(Microsoft.VisualBasic.Command()) <> "" Then
            
If Dir(Trim(Microsoft.VisualBasic.Command())) <> "" Then
                
Try
                    
RichTextBox1.LoadFile(Trim(Microsoft.VisualBasic.Command()))
                Catch 
ex As Exception
                    
Try
                        
RichTextBox1.LoadFile(Trim(Microsoft.VisualBasic.Command()))
                    Catch 
eh As Exception
                        Me
.RichTextBox1.Text My.Computer.FileSystem.ReadAllText(Trim(Microsoft.VisualBasic.Command()))
                    
End Try
                
End Try
                
Microsoft.VisualBasic.Command()
            
End If
        
End If
    
End Sub

End 
Class 

ليس من الضروى تشغيل البرنامج كمسؤول يعنى يمكنك اعادة السطر الذى فى الصورة التى فى الأعلى الى ما كان عليه


طريقة جعل برنامجك default لأحد الأمتدادات - boty - 23-08-13

اشكرك أخي لكني عندما ضغطت على run ظهر خطأ في هذا الكود
إقتباس :Dim r As RegistryKey = Registry.ClassesRoot.OpenSubKey("\txtFile\Shell\Open\Command", True)

و رسالة الخطأ تقول
إقتباس :Requested registry access is not allowed.
ما العمل الآن ؟


طريقة جعل برنامجك default لأحد الأمتدادات - AHMED HUSSIEN - 24-08-13

اسف اخى اعد عمل الذى فى الصورة التى بالأعلى
وانشاء الله لن يحدث اى خطأ تانى