Αυτό που μου έρχεται κατά νου είναι να χρησιμοποιήσεις scripting.Ας χρησιμοποιήσουμε το παράδειγμα που έδειξες εσύ.Σε μια βάση θα μπορούσες να αποθηκεύεις τα ερωτήματα σε ένα πίνακα (π.χ Questions) με πεδία Text (το κείμενο που θα εμφανίζεις στο χρήστη σου,nvarchar) και Command (η εντολή που θα περνάς στον parser σου,varchar).
Στην συγκεκριμένη περίπτωση η εγγραφή θα ήταν κάπως έτσι: "Ανοίξτε την εφαρμογή σημειωματάριο(notepad)" ,"OPENED NOTEPAD.EXE".
Έπειτα αφού έχεις κάνει την απαραίτητη διασύνδεση με τη βάση σου και φορτώσεις τα παραπάνω πεδία σε αντίστοιχες μεταβλητές θα κάνεις parse το περιεχόμενο της Command.Θα ήταν κάπως έτσι:
Private Sub Parse(ByVal Cmd As String)
Dim Commands As String() = Cmd.Split(" ")
If Commands(0) = "OPENED" Then
PollAnswer(Opened, Commands(1))
End If
End Sub
Με άλλα λόγια σπας το string σε εντολές και χρησιμοποιείς το πρώτο substring ως ένδειξη της συνάρτησης που θα χρησιμοποιήσεις (εδώ η Opened) και το επόμενο ως παράμετρο της Opened.
Όσον αφορά την PollAnswer,θα αποτελεί μέρος ένος υποθετικού συστήματος polling ώστε το σύστημά σου να ελέγχει περιοδικά αν ο χρήστης σου επιτέλεσε την ζητούμενη λειτουργία
(π.χ με τη χρήση ενός timer).Φυσικά δεν είναι υποχρεωτικό να κάνεις κάτι τέτοιο,αν θα το επέλεγες θα έμοιαζε κάπως έτσι:
Private Delegate Function ActionDelegate(ByVal parameter As String) As Boolean
Private Opened As ActionDelegate
Private Sub PollAnswer(ByVal action As ActionDelegate, ByVal parameter As String)
Και αντίστοιχα η Opened θα έκανε enumerate όλα τα processes και θα κοίταζε αν ανάμεσα σε αυτά βρίσκεται το NOTEPAD.EXE.
Φυσικά απέχει πολύ από το να είναι μια ολοκληρωμένη λύση,π.χ θα πρέπει να βάλεις και status messages στη βάση σου,(π.χ αν αποτυγχάνει ο χρήστης να του δείχνεις το λάθος του),αλλά αυτά
υλοποιούνται εύκολα.Τέλος το σύστημα αυτό μπορεί εύκολα να περιέχει μόνο τον parser και το polling system στο εκτελέσιμό σου,ενώ όλες οι εντολές (π.χ Opened κτλ) να υλοποιούνται σε ξεχωριστά dll που θα φορτώνονται δυναμικά,ένα plugin system δηλαδή.Ελπίζω να σου έδωσα κάποιες ιδέες για ξεκίνημα.